[剑指offer][Java]跳台阶

2019-06-19  本文已影响0人  Maxinxx

题目

一只青蛙一次可以跳上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);
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读