剑指offer:跳台阶

一、题目描述

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

解题思路:

  1. 按上述规则观察青蛙调台阶的跳法,可分析如下:
    当n = 1, 只有1中跳法;
    当n = 2时,有2种跳法;
    当n = 3 时,有3种跳法;
    当n = 4时,有5种跳法;
    当n = 5时,有8种跳法;

  2. 观察发现,上述构成菲波那切数列,即有如下特点:

                     1                   if(n=1) 
 Fibo(n)=            2                   if(n=2)
             Fibo(n-1)+Fibo(n-2)         if(n>2)

二、实现代码

class Solution {
public:
    int jumpFloor(int number) {
        if(number==1)
            return 1;
        if(number==2)
            return 2;
        int a=1,b=2;

        //当n>2时,一直循环加,直到达到所求的菲波那切数列中的那一项
        while(number>2)
        {
            b=b+a;
            a=b-a;
            number--;
        }
        return b;
    }
};

猜你喜欢

转载自blog.csdn.net/yph001/article/details/80935068
今日推荐