Leetcode-跳台阶问题

一次跳一阶或者跳两阶
  1. 使用递归求解
  2. 使用动态规划,可当做斐波那契数列
    第一次跳1阶,则有F(n−1)F(n-1)F(n1)次跳法;
    第一次跳2阶,则有F(n−2)F(n-2)F(n2)次跳法;
    因此总共的跳法为:
    F(n)=F(n−1)+F(n−2)F(n) = F(n-1)+F(n-2)F(n)=F(n1)+F(n2)
与斐波那契数列的不同之处

青蛙跳台阶问题: 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(n1)次跳法;
第一次跳2阶,则有F(n−2)F(n-2)F(n2)次跳法;
.........
第一次跳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(n1)+F(n2)++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(n1)=F(n2)+F(n3)++F(1)

使用F(n)F(n)F(n)-F(n−1)F(n-1)F(n1)得到:
F(n)=2F(n−1)F(n) = 2F(n-1)F(n)=2F(n1)

F(n−1)F(n-1)F(n1)可以表示为2n−12^{n-1}2n1,意思为任何一阶台阶,可以跳也可以不跳,那么n−1n-1n1阶台阶表示为2n−12^{n-1}2n1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值