1. 程式人生 > >爬樓梯(leetcode簡單篇第七十題)

爬樓梯(leetcode簡單篇第七十題)

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是一個正整數。

示例 1:

輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。

  1. 1 階 + 1 階
  2. 2 階

示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
3. 1 階 + 1 階 + 1 階
4. 1 階 + 2 階
5. 2 階 + 1 階

其實這道題就是輸出一個斐波那契數列,假設我們有f(n)個臺階,如果第一次走一步那麼我們剩餘的臺階就有f(n - 1)種走法,如果一次走倆步就有f(n - 2)種走法,這裡提交時很多同學使用遞迴可能會超時

int climbStairs(int n) //斐波那契數列
{
    int a = 1;
    int b = 1;
    int c = 0;
    if(n <= 1)
    {
        return n;
    }
    if(n > 1)
    {
        for(int i = 1; i < n; i++)
        {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
    return
c; }