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?
当n=1时,有1种方法,即直接走1步
当n=2时,有2方法:连续走2步,或直接走两步
对于n,设f(n)为总方法,则 f(n) = f(n-1)+f(n-2)
ps:f(n-1)即第一次走一步的走法,
f(n-2)即第一次走两步的走法
归回fibnacci问题解法:
1 class Solution {
2 public:
3 int climbStairs(
int n) {
4 if(n <
0)
5 return -
1;
6 int res[] = {
0,
1};
7 if(n<
2)
8 return res[n];
9
10 int fib1 =
0;
11 int fib2 =
1;
12
13 int result =
1;
14
15 for(
int i =
1 ; i <= n ; i++
){
16 result = fib1 +
fib2;
17 fib1 =
fib2;
18 fib2 =
result;
19 }
20
21 return result;
22 }
23 };
转载于:https://www.cnblogs.com/fanchangfa/p/4059079.html