斐波那契數列算法實現

基於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值最夠大時,會產生內存溢出錯誤,時間開銷和空間開銷比較大,for循環

假設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),sse

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)

遞歸雖然說能夠快速實現斐波那契數列,可是性能不佳,🈚️濫用

從上面兩個方法,看時間複雜度和空間複雜度,方法二優於方法一,故採用方法二

相關文章
相關標籤/搜索