Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php IF语句中的条件是否不满足?_Php - Fatal编程技术网

Php IF语句中的条件是否不满足?

Php IF语句中的条件是否不满足?,php,Php,此函数的目的是打印任意给定数字的阶乘。除了运行它,我只得到最后一个要计算的因子,在本例中是20*1。我很确定这是因为if/else语句中的第一个条件永远不会满足,但我不知道为什么 <?php function factorializer($factorial){ $factorialResult = 0; for($i = $factorial; $i > 1; $i--){ $tempResult = $factorial * ($i-1);

此函数的目的是打印任意给定数字的阶乘。除了运行它,我只得到最后一个要计算的因子,在本例中是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);
?>


阶乘中没有加法,阶乘使用乘法。我也不认为您需要在这里使用
if

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

在比较$tempResult和$factorialResult时,$factorialResult始终是$tempResult+$factorial的值(在第一次迭代之后)。你是对的,如果陈述从来都不是你设定的正确

我所知道的是,似乎有一个用于阶乘的内置PHP函数:gmp_fact(20)-()

Logan Murphy的答案似乎很有效,可能是除了内置的方法之外最简单的方法