美文网首页
[剑指offer][Java]跳台阶

[剑指offer][Java]跳台阶

作者: Maxinxx | 来源:发表于2019-06-19 14:37 被阅读0次

    题目

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

    程序核心思想

    跟斐波那契是一样的思想。可以跳一级也可以跳两级,就说明有两个基线条件。

    一个青蛙怎么跳上n级台阶呢?可以从n-1级跳一级上去(这样的跳法的次数跟跳上n-1级是一样的,因为从n-1级跳上n级只能有一种跳法),或者可以从n-2级跳两级上去(这样的跳法的次数跟跳上n-2级也是一样的,因为从n-2级跳上去是一次跳两级。那么有人要问了,从n-2级跳到n级还差两级台阶,为什么不能分两种方式,一种是一级一级跳,一种是一次跳两级呢?因为如果一级一级跳的话,一定会跟前面从n-1级跳上去的一种方法重复,所以只能一次跳两级)。

    所以跳上n级台阶的办法就是用跳上n-1台阶的办法数+跳上n-2级台阶的办法数。

    Tips

    同斐波那契数列,https://www.jianshu.com/p/eaef7b2711fc

    代码

    public class Solution {
        public int JumpFloor(int target) {
            if(target == 1){
                return 1;
            }else if(target == 2){
                return 2;
            }else{
                return JumpFloor(target - 1) + JumpFloor(target -2);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:[剑指offer][Java]跳台阶

          本文链接:https://www.haomeiwen.com/subject/sfymxctx.html