python遞迴演算法 斐波那契數列

2021-10-06 08:35:55 字數 1445 閱讀 2224

遞迴方法為:將問題一步步分解,直到得到可以解決的簡單問題。

通常涉及直接或間接條用自身:

例如計算列表(1,3,5,7,9,13)中各元素的和。

else:if n > 1:a = [0,1]for i in range(n - 2): #執行n-2次迴圈,即向陣列a中新增n-2個斐波那契數字return a輸入:

fibs1(10)
輸出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
第二種:

提前定義好陣列中元素的個數,再依次設定每個值為前兩個數的和。

輸入:

def fibs2(n): #n為需要的斐波那契數字個數f = [0] * n #定義包含n個0的陣列if n <= 0:print('錯誤') #n 不能 <= 0else:if n >= 2:f[1] =1 #此時f = [0 , 1]for i in range(2,n):f[i] = f[i - 1] +f[i-2]'''f[2] = f[1] + f[0] = 1,此時f = [0,1,1];三個斐波那契數字f[3] = f[2] + f[1] = 2,此時f = [0,1,1,2];四個斐波那契數字......f[n-1] = f[n-2] + f[n-1];n 個斐波那契數字'''return f
輸入:

fibs2(10)
輸出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
4兩種方法執行時間對比:

輸入:

%timeit fibs1(100)%timeit fibs2(100)輸出:
26.2 µs ± 736 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

30.7 µs ± 301 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

將複雜的計算過程封裝為乙個函式儲存起來,就可以避免寫重複的**。再次需要該計算的時候只需呼叫即可。

python 遞迴 斐波那契

什麼是遞迴演算法?函式自己呼叫自己本身 本質上return返回的時候,總是把乙個引數傳入到自己函式本身,讓函式反覆呼叫下去 遞迴有何特點?必有乙個結束條件 沒有結束條件,遞迴就沒有任何意義,python中預設只能999層遞迴 遞迴過多棧溢位,報錯 效率不高 相對而言,對於正向遞迴,遞迴次數和迴圈次數...

斐波那契數 python

def f x if x 0or x 1 return 1else return f x 1 f x 2 cal time 裝飾器 確定執行時間 deffib n return f n print fib 30 給遞迴函式加裝飾器,會出現重複列印 重新定義乙個函式,呼叫,這樣就不會重複列印fib r...

遞迴 斐波那契

題 若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規律,第n年有多少頭母牛?具體分析 1 分析題目 從出生起第四個年頭開始每年生一頭母牛 時間 年 未成熟母牛 頭 成熟母牛 頭 母牛總數 頭 1 1 0 1 2 1 0 1 3 1 0 1 4 0 1 1 5 1 1 2 6 2 1 3 7...