2017-01-15 3 views
0

Je joue avec une séquence de Fibonacci en utilisant PHP. Je comprends le concept de fonctions récursives, mais je ne comprends pas ce qui se passe ici.Fibonacci retour de séquence

code:

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

Et voici le retour:

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

Qu'est-ce que vous ne comprenez pas exactement? Ce que vous avez est une fonction qui calcule le nombre de Fibonacci. Ne comprenez-vous pas la séquence de Fibonacci, ou ne comprenez-vous pas la sortie? – Pavlin

+0

Je comprends le Fibonacci mais je ne comprends pas la sortie. "n est 3", alors "n est 2" puis "n vaut 1" - pourquoi la sortie suivante "2 quand n vaut 1"? C'est l'ordre d'exécution du code que je ne comprends pas. Merci d'avance – MadeCurler

Répondre

0

Votre function, si l'entrée est inférieure à 1 retournera 1. Sinon, il affichera la valeur de l'entrée et appelle la fonction récursivement pour les valeurs inférieures. Puisque pour -1 il retournera 1, vous obtiendrez des valeurs incorrectes. Appelons-le avec 1. Il l'appellera pour 0 et -1, en retournant 1 pour chacun et en les ajoutant, résultant en 2, ce qui est incorrect. Vous devez l'implémenter d'une manière différente:

function fs($n){ 

    if ($n<=1) { 
     return 1; 
    } 
    echo fs($n-1)+fs($n-2) ." when n is ".$n. "<br>"; 

    } //function 

    fs(3); 

Cela résoudra le problème.