输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶; 2. 2 阶
n = 1,1 种方法 n = 2, 2 种方案 n = 3, 3 种方法
n = 4, 5 种方法
解题思路:可以这样想,n 个台阶,一开始可以爬 1 步,也可以爬 2 步,那么 n 个台阶爬楼的爬楼方法就等于 一开始爬 1 步的方法数 + 一开始爬 2 步的方法数,这样我们就只需要计算 n-1 个台阶的方法数和 n-2 个台阶方法数,同理,计算 n-1 个台阶的方法数只需要计算一下 n-2 个台阶和 n-3 个台阶,计算 n-2 个台阶需要计算一下 n-3 个台阶和 n-4 个台阶……
const climbStairs = (n) => {
if(n === 1) return 1
let sum = [1, 1, 2]
for(let i = 3; i <= n; i++){
sum[i] = sum[i - 1] + sum[i - 2]
}
return sum[n]
}
console.log(climbStairs(5)) // 8