面試題10.1:青蛙跳臺階

題目描述

一隻青蛙一次能夠跳上1級臺階,也能夠跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(前後次序不一樣算不一樣的結果)。

編程思想

對於本題,前提只有 一次 1階或者2階的跳法。
a.若是兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n-1個臺階,跳法是f(n-1);
b.假定第一次跳的是2階,那麼剩下的是n-2個臺階,跳法是f(n-2)
c.由a和b假設能夠得出總跳法爲: f(n) = f(n-1) + f(n-2)
d.而後經過實際的狀況能夠得出:只有一階的時候 f(1) = 1 ,只有兩階的時候能夠有 f(2) = 2
e.能夠發現最終得出的是一個斐波那契數列,可用循環或者迭代來作。編程

編程實現

class Solution {
public:
    int jumpFloor(int number) {
        if(number <= 2)
            return number;
        int a = 1;
        int b = 2;
        int sum = 0;
        for(int i = 2;i < number;++i)
        {
            sum = a + b;
            a = b;
            b = sum;
        }
        return sum;
    }
};

題目總結

注意觸類旁通。spa

相關文章
相關標籤/搜索