遞迴方法為:將問題一步步分解,直到得到可以解決的簡單問題。
通常涉及直接或間接條用自身:
例如計算列表(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 不能 <= 0
else:
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...