【Java】用递归的思想解决青蛙跳台阶问题

青蛙跳台阶:一只青蛙一次可以跳上一级台阶,也可以跳上两级台阶。求该青蛙跳上一个n级台阶共有几种跳法
青蛙在跳的时候可以随机跳1下或者2下

  1. 但是若只有一个台阶的时候青蛙只能跳一下
    F(1)=1
  2. 当剩下两级台阶的时候就会出现两种方式一次跳一级跳两次或者一次跳两级跳一次
    F(2)=2
  3. 当有三级台阶的时候我们发现可以逆着思考这个问题,三级台阶不管前面跳的什么情况最后都只会有两种情况剩一个台阶或者两个,所以跳三级台阶的问题就变成了跳2(3-1)个台阶和跳1(3-2)个台阶的问题
    F(3)= F(1)+ F(2)
  4. 当有四级台阶的时候,最后剩一个或者两个,转换为跳3(4-1)级台阶和跳2(4-2)级台阶的问题
    F(4)= F(2)+F(3)
  5. 那么以此类推,当有n级台阶的时候就可以把问题转换为跳(n-1)级台阶和(n-2)级台阶的问题
    F(n)=F(n-1)+F(n-2)

那么就形成一个一个递归的逻辑,递归出口就是当只有一级台阶的时候只有一种跳法,当有两级台阶的时候有两种跳法

public static int frogjump(int n){
    if(n==0)  //当没有台阶的时候返回0
    {
        return 0;
    }
    if(n==1)  //当只有一个台阶的时候只有一种跳法,返回1
    {
        return 1;
    }
    if(n==2)   //当只有两个台阶的时候有两种跳法,返回2
    {
        return 2;
    }
    int count=frogjump(n-1)+frogjump(n-2);  //当有n个台阶等于跳n-1和n-2两种台阶数量的方法之和
    return count;

}

public static void main(String[] args){
    //青蛙跳台阶问题
    Scanner scanner=new Scanner(System.in);
    System.out.println("请输入共有几级台阶:");
    int x=scanner.nextInt();
    int result=frogjump(x);
    System.out.println(x+"级台阶共有"+result+"种跳法");
}

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值