假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?这里写代码片
class Solution {
public:
int climbStairs(int n) {
// int re = 0;
// if(n == 0 || n == 1){
// return 1;
// }else{
// re = climbStairs(n-1)+climbStairs(n-2);
// }
// return re;
//非递归版本
int a = 1, b = 1, re = 0;
if(n == 1 || n ==0){
return 1;
}
while(--n > 0){
re = a+b;
b = a;
a = re ;
}
return re;
}
};