我是靠谱客的博主 顺心小猫咪,最近开发中收集的这篇文章主要介绍Java练习:跳台阶问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

青蛙跳台阶

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

分析:使用递归的思想

1级台阶:1种跳法;

2级台阶:2种跳法:一种是一次跳2级,一种是每次跳2级;

3级台阶:3种跳法:有两种选择:
A------>一次跳1级,后面2级台阶可以一次跳1级,也可以一次跳2级;
B------->一次跳2级,后面再跳1级。 A、B两种方法,总共有3种跳法。

n级台阶
一次跳1级,剩余的n-1级进行递归,f(n-1)种跳法;
一次跳2级,剩余的 n-1级进行递归,有f(n-2)种跳法。
共有== f(n-1)+ f(n-2)==种跳法。
代码如下:

public class Test {
    public static int jumpFloor(int n) {
        if(n==1 || n==2) {
            return n;
        }
        else {
            return jumpFloor(n-1)+jumpFloor(n-2);
        }
    }
    public static void main(String[] args) {
        int n=3;
        System.out.println("共有"+jumpFloor(n)+"种跳法");
    }
}

在这里插入图片描述

变态跳台阶

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

2级台阶:2种跳法

3级台阶有三种选择:一次跳1级,后面的2级f(3-1)=f(2);一次跳2级,后面的1级f(3-2)=f(1);一次跳3级,后面的f(3-3)=f(0);
共有4种跳法

n级台阶:f(n-1)+f(n-2)+f(n-3)+…+f(n-n)=2*f(n-1)
代码如下:

public class Solution {
    public int jumpFloor2(int target) {
        if(target ==1){
            return 1;
        }
        return 2*jumpFloor2(target-1);
    }
    public static void main(String[] args) {
        int ret=jumpFloor2(3);
        System.out.println(ret);
    }
}

在这里插入图片描述

最后

以上就是顺心小猫咪为你收集整理的Java练习:跳台阶问题的全部内容,希望文章能够帮你解决Java练习:跳台阶问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部