题目描述:有 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步)