今天在脉脉上看到有个段子手HR说:
今天沟通了一位候选人,他给我出了个题,说答对了就把简历给我[笑哭][笑哭]各位大佬帮帮忙[抱拳][抱拳]
一个人爬楼梯,每次只能爬1个或2个台阶,假设有10个台阶,那么这个人有多少种不同的爬楼梯方法?
我只想在楼梯顶端等你,不想知道是怎么爬的[流泪][流泪]

一个有趣的问题,试着解一下。
因为最后只有迈一步或两步,所以n阶台阶,最后解为 f(n) = f(n - 1) + f(n - 2)
原来是斐波那契数列,用递归解一下所有可能的爬楼方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let ret = []
const backtrack = (n, str = '') => {
if (n === 0) {
ret.push(str)
return
}
if (n === 1) {
str += '1'
ret.push(str)
return
}
backtrack(n - 1, str + '1')
backtrack(n - 2, str + '2')
}
backtrack(10)
console.log(ret)
console.log(ret.length)