一次跳一阶或者跳两阶
- 使用递归求解
- 使用动态规划,可当做斐波那契数列
第一次跳1阶,则有F(n−1)F(n-1)F(n−1)次跳法;
第一次跳2阶,则有F(n−2)F(n-2)F(n−2)次跳法;
因此总共的跳法为:
F(n)=F(n−1)+F(n−2)F(n) = F(n-1)+F(n-2)F(n)=F(n−1)+F(n−2)
与斐波那契数列的不同之处
青蛙跳台阶问题: f(0)=1f(0)=1f(0)=1, f(1)=1f(1)=1f(1)=1, f(2)=2f(2)=2f(2)=2
斐波那契数列问题:f(0)=0f(0)=0f(0)=0, f(1)=1f(1)=1f(1)=1, f(2)=1f(2)=1f(2)=1
跳一阶,二阶,n阶台阶
1.动态规划考虑:
第一次跳1阶,则有F(n−1)F(n-1)F(n−1)次跳法;
第一次跳2阶,则有F(n−2)F(n-2)F(n−2)次跳法;
.........
第一次跳n阶,则有F(0)F(0)F(0)次跳法;
因此总共的跳法为:
F(n)=F(n−1)+F(n−2)+⋯+F(0)F(n) = F(n-1)+F(n-2)+\cdots+F(0)F(n)=F(n−1)+F(n−2)+⋯+F(0)
则:
F(n−1)=F(n−2)+F(n−3)+⋯+F(−1)F(n-1) = F(n-2)+F(n-3)+\cdots+F(-1)F(n−1)=F(n−2)+F(n−3)+⋯+F(−1)
使用F(n)F(n)F(n)-F(n−1)F(n-1)F(n−1)得到:
F(n)=2F(n−1)F(n) = 2F(n-1)F(n)=2F(n−1)
F(n−1)F(n-1)F(n−1)可以表示为2n−12^{n-1}2n−1,意思为任何一阶台阶,可以跳也可以不跳,那么n−1n-1n−1阶台阶表示为2n−12^{n-1}2n−1。