难度
- 1 阶 + 1 阶
- 2 阶
```
实例2:
```java
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。 - 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
<a name="P3fYt"></a>## 题解<a name="6gvnR"></a>### 1. 递归解法-可能超出时间限制走到当前阶梯n,有两种可能,从n-1过来,或者从n-2过来。所以 f(n) = f(n-1) + f(n-2)```javaclass Solution {public int climbStairs(int n) { if(n <= 2) { return n; } return climbStairs(n - 1) + climbStairs(n - 2);}}
2. 动态规划
class Solution { public int climbStairs(int n) { if(n <= 2) { return n; } int f1 = 1; int f2 = 2; int cur = f2; for(int i = 3; i <= n; i++) { cur = f2 + f1; f1 = f2; f2 = cur; } return cur; }}