剑指offer第二版-10_3青蛙跳台阶扩展

/**
 * 青蛙跳台阶扩展
 * <p>
 * 在青蛙跳台阶时问题中,如果把条件改成:一只青蛙可以跳1级台阶,也可以跳2、3、、、n级台阶,有多少种跳法
 * 现在我们用数学归纳法来分析一下这个变种问题:
 * <p>
 * 首先,当n=1时,只有一种跳法  f(1)=1。
 * <p>
 * 其次,当n=2时,有两种跳法,每次跳1阶,或者一次性跳2阶。f(2) =2。
 * <p>
 * 当n=3时,有4种跳法,第一种方式是第一次跳1阶,剩下的2个台阶有f(2)次跳法,f(2)=2,第二种方式是第一次跳2阶,剩下的1个台阶有f(1)=1种跳法,第三种方式是一次性跳3阶,f(0)=1。所以当n=3时,有f(2)+f(1)+f(0)=4。
 * <p>
 * 当分析到n=3时,我们发现这种场景下,可以归纳到n>3时,f(n)=f(n-1)+f(n-2)+f(n-3)+f(...)+f(0)。而f(n-1)=f(n-2)+f(n-3)+f(n-4)+f(n-5)+f(..)+f(0)。两式相减,得到f(n)-f(n-1)=f(n-1),整理可以得到f(n)=f(n-1)*2
 *
 * @author VicterTian
 * @version V1.0
 * @Date 2019/1/23
 */
public class P78_JumpFloorExtend {
	public int jumpFloorII(int n){
		if(n==1 || n==2){
			return n;
		}else{
			return jumpFloorII(n-1)*2;
		}
	}
	public static void main(String[] args) {
		P78_JumpFloorExtend jumpFloor = new P78_JumpFloorExtend();
		System.out.println("jumpFloor.jumpFloorII(5) = " + jumpFloor.jumpFloorII(5));

	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值