如何解决如何制作一个输出两个数字的阶乘之比的脚本N!/M!?
$n = 5;
$factorial = 1;
function fact($n)
{
for ($i = 1; $i <= $n; $i++) {
$factorial *= $i;
}
}
echo $factorial;
但是,我怎样才能找到两个数 (N! / M!)
的阶乘之比?
解决方法
呃,这可能是你在@Kyoto 的回答中做的很多不必要的数学运算。
// return N!/M!
function factorial_ratio($n,$m) {
if( $n == $m ) {
return 1;
} else if( $n > $m ) {
return partial_factorial($n,$m+1);
} else {
return 1 / partial_factorial($m,$n+1);
}
}
function partial_factorial($begin,$end) {
if( ! $begin > $end ) {
throw new \Exception("Begin must be larger than end");
}
$out = $begin;
for( $f=$begin-1; $f>=$end; --$f ) {
$out *= $f;
}
return $out;
}
var_dump(factorial_ratio(123456789,123456788));
输出:[在 20 毫秒内]
int(123456789)
例如:
( 1 * 2 * 3 * 4 * 5 ) / ( 1 * 2 * 3 ) == ( 4 * 5 )
,
你可以在你的函数中添加一个 return 并调用她 2 次:
$n = 5;
$m = 2;
function fact(Int $n) : Int{
$factorial = 1;
for ($i = 1; $i <= $n; $i++) {
$factorial *= $i;
}
return $factorial;
}
$factorialOfTwoNumbers = fact($n) / fact($m);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。