Els nombres de Fibonacci són els nombres de la següent seqüència d'enters. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …….. En termes matemàtics, la seqüència Fn de nombres de Fibonacci es defineix per la relació de recurrència.
F n = Fn-1+ Fn-2
amb valors de llavors: F 0 = 0 i F 1 = 1.
Nombres de Fibonacci utilitzant l'enfocament natiu
Sèrie de Fibonacci utilitzant a Bucle while de Python està implementat.
Python 3
n>=> 10> num1>=> 0> num2>=> 1> next_number>=> num2> count>=> 1> while> count <>=> n:> >print>(next_number, end>=>' '>)> >count>+>=> 1> >num1, num2>=> num2, next_number> >next_number>=> num1>+> num2> print>()> |
>
>
Sortida
1 2 3 5 8 13 21 34 55 89>
Programa Python per a nombres de Fibonacci amb recursivitat
Python Funció per trobar l'enèsim nombre de Fibonacci utilitzant Recursió de Python .
Python 3
def> Fibonacci(n):> ># Check if input is 0 then it will> ># print incorrect input> >if> n <>0>:> >print>(>'Incorrect input'>)> ># Check if n is 0> ># then it will return 0> >elif> n>=>=> 0>:> >return> 0> ># Check if n is 1,2> ># it will return 1> >elif> n>=>=> 1> or> n>=>=> 2>:> >return> 1> >else>:> >return> Fibonacci(n>->1>)>+> Fibonacci(n>->2>)> # Driver Program> print>(Fibonacci(>9>))> |
>
>Sortida
34>
Complexitat temporal: O(2 ^ n) Exponencial
Espai auxiliar: O(n)
Seqüència de Fibonacci utilitzant DP (programació dinàmica)
Programació dinàmica de Python pren els dos primers nombres de Fibonacci com 0 i 1.
Python 3
# Function for nth fibonacci> # number> FibArray>=> [>0>,>1>]> def> fibonacci(n):> > ># Check is n is less> ># than 0> >if> n <>0>:> >print>(>'Incorrect input'>)> > ># Check is n is less> ># than len(FibArray)> >elif> n <>len>(FibArray):> >return> FibArray[n]> >else>:> >FibArray.append(fibonacci(n>-> 1>)>+> fibonacci(n>-> 2>))> >return> FibArray[n]> # Driver Program> print>(fibonacci(>9>))> |
>
nick pulos llamp negre
>Sortida
34>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Optimització de la seqüència de Fibonacci
Aquí, també Optimització de l'espai Prenent els dos primers nombres de Fibonacci com 0 i 1.
Python 3
# Function for nth fibonacci number> def> fibonacci(n):> >a>=> 0> >b>=> 1> > ># Check is n is less> ># than 0> >if> n <>0>:> >print>(>'Incorrect input'>)> > ># Check is n is equal> ># to 0> >elif> n>=>=> 0>:> >return> 0> > ># Check if n is equal to 1> >elif> n>=>=> 1>:> >return> b> >else>:> >for> i>in> range>(>1>, n):> >c>=> a>+> b> >a>=> b> >b>=> c> >return> b> # Driver Program> print>(fibonacci(>9>))> |
>
>Sortida
34>
Complexitat temporal: O(n)
Espai auxiliar: O(1)
Seqüència de Fibonacci utilitzant la memòria cau
lru_cache emmagatzemarà el resultat perquè no hàgim de tornar a trobar Fibonacci per al mateix nombre.
Python 3
from> functools>import> lru_cache> # Function for nth Fibonacci number> @lru_cache>(>None>)> def> fibonacci(num:>int>)>->>>int>:> ># check if num is less than 0> ># it will return none> >if> num <>0>:> >print>(>'Incorrect input'>)> >return> ># check if num between 1, 0> ># it will return num> >elif> num <>2>:> >return> num> ># return the fibonacci of num - 1 & num - 2> >return> fibonacci(num>-> 1>)>+> fibonacci(num>-> 2>)> # Driver Program> print>(fibonacci(>9>))> |
>
com convertir char a cadena
>Sortida
34>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Seqüència de Fibonacci utilitzant retrocés
Funció per enèsimo nombre de Fibonacci utilitzantPython 3
def> fibonacci(n, memo>=>{}):> >if> n <>=> 0>:> >return> 0> >elif> n>=>=> 1>:> >return> 1> >elif> n>in> memo:> >return> memo[n]> >else>:> >memo[n]>=> fibonacci(n>->1>)>+> fibonacci(n>->2>)> >return> memo[n]> # Driver Program> print>(fibonacci(>9>))> |
>
>Sortida
34>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Consulteu l'article complet sobre el Programa per als nombres de Fibonacci per a més detalls!