有条件的IF声明没有得到满足?

时间:2014-09-29 20:00:19

标签: php

此功能的目的是打印任何给定数字的阶乘。除非我运行它,我得到的最后一个因素只计算,在这种情况下,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);
?>

2 个答案:

答案 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的回答似乎运作良好,除了内置功能外,它可能是最简单的方法。