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?
z这是一道简单题,类似于feibonaqi数列。
递归式是
result(i)=
1 | i=1 |
2 | i=2 |
result(i-2)+result(i-1) | i>2 |
这样子的话结果就很简单了。
上代码:
public class Solution {
public int climbStairs(int n) {
if(n==1)return 1;
if(n==2)return 2;
int i1=1,i2=2,i3=0;
for(int i=3;i<=n;++i){
i3=i1+i2;
i1=i2;
i2=i3;
}
return i3;
/* if(n>2)return climbStairs(n-1)+climbStairs(n-2);
else{
if(n==1)return 1;
if(n==2)return 2;
return 0;
}*/
}
}