我觉得这与楼梯问题非常相似,你可以使用斐波那契递归调用,但让我失望的是 M 步骤的第二个参数,我不知道如何应用它。帮忙?
我可以像楼梯问题一样解决这个问题,这只是一个斐波那契应用程序,然后使用该斐波那契辅助函数进行转换。
我似乎根本无法让它工作
function numSteps(n, m) {
if (n === 0) return 1
let begin = 0
let end = 1
let result = 0
for (let i = 1; i <= n; i++) {
while (m < n) {
result = begin + end
begin = end
end = result
}
}
return result
};
console.log(numSteps(2, 6))
function steps(n, m) {
let table = new Array(n + 1).fill(false);
table[0] = true;
let total = 0
for (let i = 0; i < table.length; i++) {
if (table[i] === true) {
for (let j = 1; j <= m; j++) {
table[j] = true
total += 1
}
}
}
return total;
}
最佳答案
生成器可能是解决 JavaScript 中排列组合问题的最佳方法。通过在纸上或文本编辑器中逐步跟踪评估,您将学到很多东西 -
const waysToClimb = function* (n, m, seq = [])
{ if (n > 0)
for (let i = 1; i <= m; i++)
if (i > n)
return
else
yield* waysToClimb (n - i, m, [ i, ...seq ])
else
yield seq
}
const result =
Array.from (waysToClimb (10, 3))
console.log (JSON.stringify (result))
// [ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
// , ...
// , [ 1, 3, 3, 3 ]
// ]
关于javascript - 当给定 N 个步数和 M 个最大可能步数时,返回该人可以从 0 级到 N 级(更高)的可能序列总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57844654/