感觉像以前做过的一道数学题
int climbStairs(int n) {
if(n<=0){
return 0;
}
if(n==1){
return 1;
}
if(n==2){
return 2;
}
int total,OneStepBefore,TwoStepsBefore;
int i;
OneStepBefore=2;
TwoStepsBefore=1;
total=OneStepBefore+TwoStepsBefore;
for(i=0;i<n-3;i++){
TwoStepsBefore=OneStepBefore;
OneStepBefore=total;
total=OneStepBefore+TwoStepsBefore;
}
return total;
}
总之就是n的步数就是n-1的加上n-2的
fibonacci数列
for(i=0;i<n-3;i++){
TwoStepsBefore=OneStepBefore;
OneStepBefore=total;
total=OneStepBefore+TwoStepsBefore;
}
在当前过程中 两步以前的就是上一个一步以前的
一步以前的 就是上一步total的
这一步total的就是一步加两步
这大概是fibonacci数列的非递归构造法吧
大概就是这样