Veuillez expliquer ce code simple :
public int fibonacci(int n) {
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
Je suis confus avec la dernière ligne surtout parce que si n = 5 par exemple, alors fibonacci(4) + fibonacci(3) serait appelé et ainsi de suite mais je ne comprends pas comment cet algorithme calcule la valeur à l'indice 5 par cette méthode. Veuillez m'expliquer avec beaucoup de détails !
10 votes
Notez que ceci est récursif et s'exécute en temps exponentiel. C'est inefficace pour les grandes valeurs de N. En utilisant une approche itérative, j'ai pu calculer les 10 000 premiers nombres de la séquence. Ils peuvent être trouvés ici - goo.gl/hnbF5
0 votes
@AdamFisher : Pouvez-vous partager le code que vous avez utilisé pour calculer 10.000 nombres en séquence ? Je suis vraiment curieux de le connaître.
4 votes
@AdamFisher Le lien auquel vous faites référence est mort.
2 votes
Cette vidéo explique comment comprendre la fonction récursive en 10 minutes. youtube.com/watch?v=t4MSwiqfLaY
0 votes
Jetez un coup d'oeil à ma solution, qui est optimisée pour les appels récursifs. Je suis un peu surpris que cette approche ne soit mentionnée nulle part sur Internet.
0 votes
Pour les futurs lecteurs, voici le Saint Graal du traçage de la double récursion : youtube.com/watch?v=PT0mS3thy6Q&t=36s
2 votes
Il existe également une approche itérative qui pourrait être moins difficile pour vous. Un excellent article sur les approches récursive et itérative, avec du code, est disponible ici. codeflex.co/java-get-fibonacci-number-by-index
0 votes
Vous devez également renvoyer -1 si n est inférieur à 0, sinon vous obtiendrez une erreur.
0 votes
@ChathuraPalihakkara C'est une excellente vidéo. Elle explique la récursion !