
思路要点:将问题转化为求斐波那契数列的第n项,然后迭代。
思路分析:最后一次爬的阶数不是1就是2,假设爬n阶的方法数是f(n),假设最后一次爬1阶,那么爬前面的 n-1阶的方法数是f(n-1);假设最后一次爬2阶,那么爬前面n-1阶的方法数是f(n-2)。所以可以得到:f(n) = f(n-1) + f(n-2),也就是斐波那契数列,只是f(1) = 1,f(2) = 2。这样递推下去f(3) = 3, f(4) = 5......
class Solution {
public:
    int p = 1;
    int q = 2;
    int r = 0;
    int climbStairs(int n) {
        if(n == 1) r = p;
        if(n == 2) r = q;
        else
        {
            for(int i = 0;i < n-2;i++)
            {
                r = p + q;
                p = q;
                q = r;
            }
        }
        return r;
    }
}; 
                


















