(一)遞迴概念
將複雜問題 遞推分解為最簡問題 然後將結果回歸的過程
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...