难度:简单

    描述:
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
    注意:给定 n 是一个正整数。

    示例:

    1. 示例 1
    2. 输入: 2
    3. 输出: 2
    4. 解释: 有两种方法可以爬到楼顶。
    5. 1. 1 + 1
    6. 2. 2
    7. 示例 2
    8. 输入: 3
    9. 输出: 3
    10. 解释: 有三种方法可以爬到楼顶。
    11. 1. 1 + 1 + 1
    12. 2. 1 + 2
    13. 3. 2 + 1

    思路分析:
    利用动态规划
    第 ii 阶可以由以下两种方法得到:

    在第 (i-1)(i−1) 阶后向上爬一阶。

    在第 (i-2)(i−2) 阶后向上爬 22 阶。

    所以到达第 ii 阶的方法总数就是到第 (i-1)(i−1) 阶和第 (i-2)(i−2) 阶的方法数之和。

    令 dp[i]dp[i] 表示能到达第 ii 阶的方法总数:

    dp[i]=dp[i-1]+dp[i-2]

    代码实现:

    1. var climbStairs = function(n) {
    2. if (n <= 2) {
    3. return n
    4. }
    5. let num1 = 1;
    6. let num2 = 2;
    7. let Num = 0;
    8. for (let i = 2; i < n; i++) {
    9. numN = num1 + num2;
    10. num1 = num2;
    11. num2 = numN;
    12. }
    13. return numN;
    14. };
    1. var climbStairs = function(n) {
    2. if(n <= 2) return n;
    3. return climbStairs(n-1) + climbStairs(n-2)
    4. };