此功能的目的是打印任何给定数字的阶乘。除非我运行它,我得到的最后一个因素只计算,在这种情况下,20 * 1.我很确定这是因为我的if / else语句中的第一个条件永远不会被满足,但我不能找出原因。
<?php
function factorializer($factorial){
$factorialResult = 0;
for($i = $factorial; $i > 1; $i--){
$tempResult = $factorial * ($i-1);
if($tempResult == $factorialResult){
$factorialResult = $factorialResult + $tempResult;
}
else{
$factorialResult = $tempResult;
}
}
print($factorialResult);
}
factorializer(20);
?>
答案 0 :(得分:0)
在阶乘,阶乘使用乘法中没有增加。我也认为你不需要在这里使用if
$result = 1;
for($i = $factorial; $i > 1; $i--) {
$result *= $i;
}
return $result;
答案 1 :(得分:0)
当比较$ tempResult和$ factorialResult时,$ factorialResult将始终是$ tempResult + $ factorial的值(在第一次迭代之后)。你是对的,if语句永远不会像你设置的那样真实。
我所知道的是,似乎有一个用于阶乘的内置PHP函数:gmp_fact(20) - (http://php.net/manual/en/function.gmp-fact.php)
Logan Murphy的回答似乎运作良好,除了内置功能外,它可能是最简单的方法。