You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
遞推公式為f(n)=f(n-1)+f(n-2)
每個元素僅依賴於前兩個元素。
1 class Solution {
2 public:
3 int climbStairs(int n) {
4 int result[3] = {0,1,2};
5 if(n < 3){
6 return result[n];
7 }
8
9 int f1 = 1;
10 int f2 = 2;
11 int fn = 0;
12
13 for(int i = 3; i <= n; i++ ){
14 fn = f1 + f2;
15 f1 = f2;
16 f2 = fn;
17 }
18 return fn;
19 }
20 };