跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
题目分析:对于这样的题目,我们不妨先举一个实例进行分析,例如n=5时,无非就是下面三种跳法,只是顺序可变,然后就把问题转变为排列组合的问题了。
跳法一:0个2,5个1
跳法二:1个2,3个1
跳法三:2个2,1个1
相同元素的排列组合问题,我们可以采取隔板法进行分析,例如:
对于跳法一:全是1,肯定只有一种排列方案;
对于跳法二:3个1,1个2。我们可以先把3个1排成一排,然后在1的间隙中插入2,总共有4个间隙,所以为C41,故共有四种排列方案;
对于跳法三:2个2,1个1。我们可以先把2个2拍成一排,然后在2的间隙中插入1,总共有3个间隙,所以为C31,故共有3中排列方案;
综上所述:共有1+4+3=8种排列方案。
这样我们就掌握了分析一个具体台阶数跳法的方法了,现在我们整体来分析一下,F(0)=0、F(1)=2、F(2)=2、F(3)=3、F(4)=5、F(5)=8、F(6)=13、…。从节选的一段我们可以得出其中的规律:斐波那契数列
所以编程时就直接按斐波那契数列的递归方案编就可以了。
具体代码

class Solution {
public:
    int jumpFloor(int number) {
        if(number <= 2)
            return number;
        else 
            return jumpFloor(number-1)+jumpFloor(number-2);
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝勒里恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值