就是个斐波那契数列,达到第三个台阶的跳法可以从第一个台阶直接跳两步或者是从第二个台阶跳一步,因此对于第n个台阶来说,可以从第n-2个台阶跳两步到达,也可以从第n-1个台阶到达,因此跳到第n个台阶的跳法等于前两个台阶的跳法之和
递归会超时
int climbStairs(int n) {
if(n==1||n==2)
return n;
return climbStairs(n-1)+ climbStairs(n-2);
}
改迭代
class Solution {
public:
int climbStairs(int n) {
int a = 0, b = 0, c = 1;
while (n--) {
a = b;
b = c;
c = a + b;
}
return c;
}
};