斐波纳契序列返回

时间:2017-01-15 12:09:38

标签: php fibonacci

我正在使用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

1 个答案:

答案 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);

这将解决问题。