题目

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

思路

本题采用递归的思想。因为青蛙只能跳1级或者是2级台阶,现在比如请问要跳n级台阶,最后一跳肯定是从n-1级跳1级到n级,或者是从n-2级跳2级到n级,所以F(n)=F(n-1)+F(n-2),也就是说跳到n-1级的跳法总数+跳到n-2级的跳法总数=跳到n级的跳法总数。而无论跳到n-1级的跳法总数还是跳到n-2级的跳法总数都可以用这种思想,一直到F(n)台阶级数为0、1、2时,跳法是明确的,就是等于n种。

代码

public class Solution {
    public int jumpFloor(int target) {
        //注意:target小于0青蛙跳不了,返回-1
        if(target < 0){
            return -1;
        }else if(target == 0 || target == 1 || target == 2){
            return target;
        }

        return jumpFloor(target-1) + jumpFloor(target-2);
    }
}