遞迴經典應用之斐波那契數列

2021-10-19 09:41:47 字數 1051 閱讀 2738

(一)遞迴概念

將複雜問題 遞推分解為最簡問題 然後將結果回歸的過程

windows - linux

linux = linux is not unix

使用方法: 自己呼叫自己

(二)斐波那契數列

兔子問題

有一對大兔子 每個月繁衍 一對小兔子(一公一母)

小兔子 每個月生長為 大兔子

現有一對小兔子 一年後 有多少對?

m1 1 a

m2 1 a~

m3 2 a->b

m4 3 a->c + b~

m5 5 a->d + b->e + c~

m6 8 a->f + b->g + c->h + d~ + e~

當前的所有兔子 = 上個月的所有兔子 + 這個月新生的兔子(可以繁衍的兔子)

= 上個月的所有兔子數量 + 上上個月的所有兔子數量(經過了乙個月的生長週期)

mn = m(n-1) + m(n-2)

m5 = m4 + m3

= (m3+m2) + (m2+m1)

= (m2+m1 + m2) + (m2+m1)

= 1+1+1 + 1+1 = 5

m1=1 m2=1

使用方式:

1)推導出遞推公式 —— 找規律

2)找到遞推的出口 —— 找出口

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-f7lfqx1q-1613145269067)(c:/users/meiqi/desktop/images/image-20201009153027457.png)]

public static int fib(int n)
大部分遞迴 可以轉化為迭代處理

make it work,make it right,make it fast

思路:使用陣列儲存,通過n-1和n-2的值進行計算

public static int fib1(int n) 

return arr[n - 1];

}

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

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

斐波那契數列應用

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

遞迴與斐波那契數列

迭代實現 def fab n a1 1 a2 1 a3 1if n 1 print 輸入有誤 return 1 while n 2 0 a3 a1 a2 a1 a2 a2 a3 a 1return a3 result fab 20 if result 1 print 總共有 d對小兔子誕生 resu...