題目描述
假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個正整數。
示例 1:
輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 階 + 1 階 2. 2 階
示例 2:
輸入: 3 輸出: 3 解釋: 有三種方法可以爬到樓頂。 1. 1 階 + 1 階 + 1 階 2. 1 階 + 2 階 3. 2 階 + 1 階
觀察,1階1種,2階2種,3階3種,4階5種,正好是斐波那契數列。第一次用遞歸超時
class Solution: def climbStairs(self, n): # step = 0 # if n == 0 or n == 1: # return 1 # else: # step = self.climbStairs(n-1) + self.climbStairs(n-2) # return step a, b, c = 1, 2, 3 if n == 1 or n == 2: return n while c <= n: step = a + b a = b b = step c += 1 return step