青蛙跳台阶 C++

题目描述

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

分析

 这个要思考下,当台阶数是1时,只有一种跳法;

当台阶数是2时,有两种跳法;

当台阶数是3时,第一次跳,要么是跳一级,要么是跳两级,这两种状态,是两种完全不同的结果。

跳一级,那么剩下的就是n-1级台阶的跳法;

跳两级,那么剩下的就是n-2级台阶的跳法;

第一步怎么跳,决定了总的路子跳法,所以总的跳法是f(n-1)+f(n-2)的跳法。

这就是斐波拉契数列了。

class Solution {
public:
    int jumpFloor(int number) {
        if(number==1)
            return 1;
        if(number==2)
            return 2;
        else
            return jumpFloor(number-2)+jumpFloor(number-1);
    }
};

猜你喜欢

转载自blog.csdn.net/sinat_39416814/article/details/105119133