- 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路:
原本对这道题有点懂又不是很懂,后来仔细看了一下别人的文章,终于理解了。
f(1) : 1
f(2) : 11 , 2
f(3) : 12, 111, 21
等价于 f(1) 走 2 步加上 f(2) 走 1 步
f(4) : 121, 1111, 211, 112, 22
f(4) = f(3) + f(2)
…
f(n) = f(n-1) + f(n-2)
var climbStairs = function(n) {
let a = b = 1;
for (let i = 0; i < n; i++) {
[a, b] = [b, a + b];//ES6的递归写法
}
return a;
};