Fibonači skaitļi ir skaitļi šādā veselu skaitļu secībā. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …….. Matemātiskā izteiksmē Fibonači skaitļu secību Fn nosaka atkārtošanās relācija.
F n = Fn-1+ Fn-2
ar sēklu vērtībām: F 0 = 0 un F 1 = 1.
Fibonači skaitļi, izmantojot vietējo pieeju
Fibonači sērija, izmantojot a Python kamēr cilpa tiek īstenots.
Python3
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>()> |
>
>
Izvade
1 2 3 5 8 13 21 34 55 89>
Python programma Fibonači skaitļiem, izmantojot Recursion
Python Funkcija, lai atrastu n-to Fibonači skaitli, izmantojot Python rekursija .
Python3
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>))> |
>
>Izvade
34>
Laika sarežģītība: O(2 ^ n) Eksponenciāls
Palīgtelpa: O(n)
Fibonači secība, izmantojot DP (dinamisko programmēšanu)
Python dinamiskā programmēšana ņem pirmos divus Fibonači skaitļus kā 0 un 1.
Python3
java vs c++
# 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>))> |
>
>Izvade
34>
Laika sarežģītība: O(n)
Palīgtelpa: O(n)
Fibonači secības optimizācija
Šeit arī kosmosa optimizācija, ņemot 1. divus Fibonači skaitļus kā 0 un 1.
Python3
# 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>))> |
>
>Izvade
34>
Laika sarežģītība: O(n)
Palīgtelpa: O(1)
Fibonači secība, izmantojot kešatmiņu
lru_cache saglabās rezultātu, lai mums vairs nebūtu jāatrod Fibonači par to pašu numuru.
Python3
skriptu palaišana Linux sistēmā
from> functools>import> lru_cache> # Function for nth Fibonacci number> @lru_cache>(>None>)> def> fibonacci(num:>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>))> |
>
>Izvade
34>
Laika sarežģītība: O(n)
Palīgtelpa: O(n)
Fibonači secība, izmantojot Backtracking
Funkcija n-tajam Fibonači skaitlim, izmantojotPython3
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>))> |
>
>Izvade
34>
Laika sarežģītība: O(n)
Palīgtelpa: O(n)
Lūdzu, skatiet pilnu rakstu par Programma Fibonači skaitļiem sīkākai informācijai!