递归

class Solution {
public:
    int jumpFloor(int n) {
        if (n == 1) return 1;
        if (n == 2) return 2;
        return jumpFloor(n-1) + jumpFloor(n-2);
    }
};

动态规划

class Solution {
public:
    int jumpFloor(int n) {
        int dp[50];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; ++i) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[n];
    }
};

空间压缩

class Solution {
public:
    int jumpFloor(int n) {
        if (n == 1 || n == 2) return n;
        int step1 = 1;
        int step2 = 2;
        int step_n = 0;
        for (int i = 3; i <= n; ++i) {
            step_n = step1 + step2;
            step1 = step2;
            step2 = step_n;
        }
        return step_n;
    }
};