Возврат последовательности Фибоначчи

Я играю с последовательностью Фибоначчи, используя 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

Решение

Ваш function, если вход меньше 1 вернет 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);

Это решит проблему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]