70.爬楼梯
我的代码(c语言版)
int climbStairs(int n){
if(n==1) return 1;
if(n==2) return 2;
else return climbStairs(n-1)+climbStairs(n-2);
}
提交了一下但是显示超出时间限制,应该是用了递归的原因,看了一下别人写代码的想法,其实就是用非递归的斐波那契数列,经修改
int climbStairs(int n){
int p,q,r,i;
p=1;
q=1;
if(n==1){
r=1;
}
else{
for(i=0;i<n-1;i++){
r=p+q;
p=q;
q=r;
}
}
return r;
}