题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路
最后一步有两种情况,从n-1跳到n,从n-2跳到n。
推出:f(n)=f(n-1)+f(n-1) 斐波那契数列。
代码
class Solution {
public:
int climbStairs(int n) {
if(n==1){
return 1;
}
if(n==2){
return 2;
}
long long int a=1,b=2,c;
n-=2;//减去前两项
while(n--){
c=a+b;
a=b;
b=c;
}
return c;
}
};