2014-09-29 96 views
-3

此功能的目的是打印任何给定数字的阶乘。除了运行它之外,我只能计算最后一个因子,在本例中为20 * 1。我很确定这是因为我的if/else语句中的第一个条件永远不会被满足,但我不能找出原因。IF条件中的条件不符合?

<?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

没有添加因子,因子用途乘法。我也不认为你需要使用if这里无论是

$result = 1; 
for($i = $factorial; $i > 1; $i--) { 
    $result *= $i; 
} 
return $result; 
0

当比较$ tempResult和$ factorialResult,$ factorialResult永远是$ tempResult + $阶乘值(第一次迭代之后)。你是对的,if语句不会像你设置的那样真实。

我所知道的是,有似乎是一个内置的阶乘PHP函数:gmp_fact(20) - (http://php.net/manual/en/function.gmp-fact.php

洛根墨菲的答案似乎运作良好,可能是做到这一点的最简单方法除了内置。