我正在使用PHP玩斐波那契序列。我理解递归函数的概念,但我不明白这里发生了什么。
代码:
function fs($n) {
if ($n < 1) {
return 1;
} // if
echo " n is " . $n . "<br>";
echo fs($n - 1) + fs($n - 2) . " when n is " . $n . "<br>";
} // function
echo fs(3);
这是回报:
n is 3
n is 2
n is 1
2 when n is 1
1 when n is 2
n is 1
2 when n is 1
0 when n is 3
答案 0 :(得分:0)
您的function
,如果输入小于1将返回1.否则它将打印输入的值并递归调用该函数以获得较低的值。因为-1将返回1,您将得到不正确的值。让我们用它来调用它。它将调用它为0和-1,每个返回1并添加它们,结果为2,这是不正确的。您需要以不同的方式实现它:
function fs($n){
if ($n<=1) {
return 1;
}
echo fs($n-1)+fs($n-2) ." when n is ".$n. "<br>";
} //function
fs(3);
这将解决问题。