青蛙跳台阶衍生之变态跳台阶(递归,思路分析及代码实现)

本文详细解析了一只青蛙如何跳上n级台阶的不同方法数量问题。通过递归算法实现,探讨了不同跳跃策略下的数学规律,并给出了简洁高效的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。


//思路: 接上一个跳台阶问题思路继续分析,上个问题中,青蛙只能跳1级或者2级。  则最后一跳只有两种可能,所以F(n) = F(n-1) + F(n-2)
//现在青蛙可以跳n级。  假设台阶为n级,则青蛙可以 跳一次或者多次。  一次: 直接跳n级,这是一种方法。  多次: 青蛙跳到 1到n-1级 任一级(不管怎样跳,跳几次)后再跳一次到n级。
//或者这样分析,青蛙最后一跳,有可能是从起点直接跳到终点,或者从起点跳了若干步后(到达 1到n-1级中间任一级 )再跳到n级。
//所以总的方法数为:青蛙 跳到 1级到n-1级 每级可能的方法数(再跳到n级) + 1(直接跳到n级)
//F(n) = F(n-1) + F(n-2) + ... + F(1) + 1;
//可得: F(n-1) = F(n-2) + F(n-3) +..._F(1) + 1;
//则F(n) = F(n-1) + F(n-1)
//即F(n) = 2F(n-1)

//其实这个题和上个题这种类型题这么分析反而麻烦了。
//如果是笔试遇到这种题, 我们完全可以 把前面几次情况列出来后,观察出数字之间的规律, 直接按规律写函数
//而不用像上面这样去分析。  但是按照我们的分析虽然费时得出的答案一定是正确的,找规律得出的答案就不一定正确了。所以还是根据自己拥有时间选择吧。
//面试时先按找到的规律写出函数,告诉面试官你发现的规律。如果面试官还要你从逻辑角度陈述你的代码,再按上面的思路分析也不迟

int jumpFloorII(int number) 
{
	if ( number <= 0 )
		return 0;
        
    if ( 1 == number )
        return 1;
	
	return 2 * jumpFloorII( number-1 );
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值