今天在脉脉上看到有个段子手 HR 说: 今天沟通了一位候选人,他给我出了个题,说答对了就把简历给我[笑哭][笑哭]各位大佬帮帮忙[抱拳][抱拳] 一个人爬楼梯,每次只能爬 1 个或 2 个台阶,假设有 10 个台阶,那么这个人有多少种不同的爬楼梯方法? 我只想在楼梯顶端等你,不想知道是怎么爬的[流泪][流泪]
一个有趣的问题,试着解一下。 因为最后只有迈一步或两步,所以 n 阶台阶,最后解为 f(n) = f(n - 1) + f(n - 2) 原来是斐波那契数列,用递归解一下所有可能的爬楼方法。
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)