斐波那契數列演算法實現

2022-09-13 14:57:11 字數 810 閱讀 6949

基於python實現斐波那契數列

1.使用遞迴 實現斐波那契數列

#時間複雜度o(2^n)

def fb(n):

assert(n>=0)

if n <= 2:

return 1

return fb(n - 1) + fb(n -2)

fb(n) n值最夠大時,會產生記憶體溢位錯誤,時間開銷和空間開銷比較大,

假設n = 10, f(10) = 55

f(10) = f(9) + f(8),

f(9) = f(7) + f(8),

f(8) = f(7) + f(6),

f(7) = f(6) + f(5),

f(6) = f(5) + f(4),

f(5) = f(4) + f(3),

f(4) = f(3) + f(2),

f(3) = f(2) + f(1)

從上述等式可以看出f(10)---f(1),一分二,二分四的樹形結構,樹的深度為n,時間複雜度為o(2^n)

2.使用for迴圈實現斐波那契數列

#時間複雜度o(n)

def fb1(n):

assert(n>=0)

a,b = 0,1

for i in range(1,n + 1):

a,b = b,a + b

return a

從上述等式可以看出遍歷n,語句走了n遍,故時間複雜度為o(n)

遞迴雖說可以快速實現斐波那契數列,但是效能不佳,

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

實現斐波那契數列

方法 一 通過迭代器實現 class fibiterator object def init self,n self.n n 是使用current儲存當前數列中第幾個數 self.current 0 使用num1儲存數列中前乙個數,初始值為0 self.num1 0 使用num2儲存數列中後乙個數,...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...