【发布时间】:2013-01-25 15:10:09
【问题描述】:
我们可以说当$number <2 不会再次调用factirial() 函数吗?或者它调用 factorial() 函数,但它总是将 factorial 设置为 factorial(1)。如果是这样,我认为递归使用更多内存。我对么?
<?php function factorial($number){
if ($number < 2) {
return 1;
} else {
return ($number * factorial($number-1));
}
}
echo factorial(5);
?>
这是我在函数中的猜测
3*factorial(2)
2*factorial(1)
1*factorial(1)
1*factorial(1)
【问题讨论】:
-
如果
$number$number > 2时才会进入递归状态。 -
为什么它不总是返回 1,因为对于任何数字它都是
$number<2 -
@BenM
$number >= 2时会调用自己(小错字) -
是的,谢谢!
-
递归确实会占用更多内存。如果你输入一个像 10000 这样的大数字,你的函数可能会导致 PHP 死掉。