一般思想(递归):
int climbStairs(int n){
int means=0;
int a[]=
if(n==1||n==0){
return 1;
}else if(n<0){
return 0;
}
means = climbStairs(n-2)+climbStairs(n-1);
return means;
}
但是,时间复杂度不能满足题目要求。
更佳题解:
int climbStairs(int n) {
int p = 0, q = 0, r = 1;
for (int i = 1; i <= n; ++i) {
p = q;
q = r;
r = p + q;
}
return r;
}
每一台阶的方法数,是n-1阶和n-2阶方法数之和。