小兔子想去月球上旅行,假设小兔子拥有一个 n 阶梯子,当你爬完 n 层就可以到达月球,小兔子每次可以跳 1 或者 2 个台阶,小兔子有多少种跳法可以到达月球呢?
给定 n 是一个正整数,代表梯子的阶数,当 n=2 时,小兔子有 2 种跳法到达月球;当 n=3 时,小兔子有 3 种跳法跳到月球,以此类推
这里为同学提供以下两种解题思路。
可以使用递归来实现,具体思路如下:
当阶梯数为 0 时,只有 0 种方法;当阶梯数为 1 时,只有 1 种方法;当阶梯数为 2 时,只有 2 种方法,所以当阶梯数 n 小于等于 2 时,可以直接返回值。
如果阶梯数大于 2,就递归。
可以使用动态规划来实现,具体思路如下:
当阶梯数 n 为 0 时,直接返回 0。
当阶梯数 n 为 1 时,直接返回 1。
当阶梯数大于 1 时,假设有 i 阶梯子需要爬,就有 dp[i] 中方法。
3 阶以上的梯子,都满足一个规律:dp[i] = dp[i-1] + dp[i-2]。
解题思路不只这两种,同学们可以自由发挥。
请完善 index.js 文件中的代码,页面显示结果如下:
const climbStairs = (n) => {
if (n <= 2) {
return n
} else if (n > 2) {
return climbStairs(n - 1) + climbStairs(n - 2)
}
}
module.exports = climbStairs;