# Function for nth Fibonacci number def Fibonacci(n): if n<0: print("Incorrect input") # First Fibonacci number is 0 elif n==1: return 0 # Second Fibonacci number is 1 elif n==2: return 1 else: return Fibonacci(n-1)+Fibonacci(n-2) # Driver Program print(Fibonacci(9)) I am new to programming. I cant get how this codes finds out the Fibonacci number.... How does the program calculates the value of (n-1) and (n-2)
5 Réponses :
return Fibonacci(n-1)+Fibonacci(n-2) This is a recursion. You should cache values to reduce recalculation.moreover, there is Binet's formula to calculate it at O(1) time. https://en.wikipedia.org/wiki/Fibonacci_number
Votre programme utilise la récursion.
Vous pouvez trouver la visualisation, ce qui pourrait vous aider à comprendre:
https://observablehaq.com/@victortai/visualizing-Recursive-fibonacCi-algorithme < / a> p> La mise en œuvre alternative est une algorithme itérative. Je pourrais être plus facile à comprendre p>
Pouvez-vous me dire quelque chose sur la façon dont la récursion fonctionne ..
L'idée derrière ce morceau de code est
Pour expliquer comment votre code fonctionne pour identifier le nième numéro de la série Fibonacci, vous devez d'abord comprendre comment une série de Fibonacci est générée.
0, 1, 1, 2, 3, 5, 8, 13, 13, Et ainsi de suite. p>
ICI Si vous regardez les deux premiers numéros, il s'agit de 0 et 1, ce sont les numéros de base, à partir du numéro suivant, on découvre l'ajout des deux numéros précédents. D'où la formule. P> MAINTENANT Si vous regardez votre code, ce qui précède est exactement décrit ici. Toute valeur de N moins que 1 sera considérée comme non valide. Une valeur de 1 retourne a 0 et une valeur de 2 retours a 1. C'est exactement la même chose que nous l'avons mentionnée ci-dessus. P> enfin pour tous les autres cas que nous trouvons le Deux numéros précédents dans la série en utilisant la même règle (fonction) et les résument à obtenir le numéro souhaité. p> p>
Essayez 0 en tant que paramètre.