跳台阶

青蛙跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

递归:

递归的思想是自顶向下来解决问题的,就是比如青蛙跳了3级台阶,那么青蛙之前只能是两种情况,一是3-1=2在第二台阶跳上来的,二是3-2=1在第一台阶跳上来的,所以设青蛙跳法的函数为f(x)那么,这个函数可以看作是 f(x)=f(x-1)+f(x-2);

然后只需要计算这个函数最开始的两个值就可以完美的解决,可以是f(1)和f(2)即f(1)=1, f(2)=2;或者是f(1)和f(0)(这里要注意,因为f(0)这个数没有什么意义,因为青蛙都没跳,不过设为0的话可能会影响结果,比如在图下我如果把函数改为targe<2的话,那么最终递归到的数总会是f(0)和f(1),这时f(0)对总体来说就起到决定性因数了,如果要那样写的话就把f(0)设置为1);

迭代:

迭代是自底向上的,算法效率比较高,可以通过斐波那契数列来了解思路,即0,1,1,2,3,5,8.....

青蛙的跳的台阶和跳的情况数是:

台阶数跳法数
11
22
33
45

 

对应了斐波那契数列的第三位开始,这里设置的是从0,1开始计算,如果是1的话就两数都向前移动一位就得到1,1,然后这里的g代表的就是青蛙的跳法

t和g的设置不是固定的,只是代表前后,然后根据设置的值来选择哪个作为需要数,只要找到了斐波那契和青蛙跳规律的切入点就可以了

                                      

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值