題目描述:有 N 階樓梯,每次可上一階或兩階,求有多少種上樓梯的方法
先來分析下這個問題:
當N=1時,這個很好了解,隻能跨1步這一種了
當N=2時,你每次可以跨1步或2步,那就是走2步或走兩個1步
當N=3時,因為你可以跨1步或2步,那你在台階1或2都能行。要計算到台階1有多少種走法,到台階2有多少種走法,然後2種相加,依次逆推。
當N=4時,你在台階2或3都能行,計算到台階2有多少種走法,到台階3有多少種走法,然後2者相加,依次逆推。
總結如下:你會發現,這是斐波拉切數列,使用遞歸出現重複計算問題,是以選擇動态規劃算法。
<col>
層數
公式
種數
1
f(1)=1
2
f(2)=2
3
f(3)=f(1)+f(2)
4
f(4)=f(2)+f(3)
5
第三層:3種(在第一層走2步或在第二層走1步)
第四層:5種(在第二層走2步或在第三層走1步)