【发布时间】:2020-11-09 04:27:27
【问题描述】:
在其他语言中有很多有用的线程,但我很难在 JavaScript 中找到一个好的线程。下面的代码有效,但对于我来说,我无法弄清楚为什么。我了解递归的基础知识,但这个让我很难过。在我看来,resolve 的每个递归调用只会将结果总和放在一个与memory[n] 的最终调用无关的索引中。如果在 JavaScript 中有关于这个问题的其他资源,我也将不胜感激!
var climbStairs = function(n) {
let result = resolve(n, []);
return result;
};
function resolve(n, memory) {
if (memory[n]) {
return memory[n];
}
if (n == 0) {
return 1;
}
if (n < 0) {
return 0;
}
let result = resolve(n - 1, memory) + resolve(n - 2, memory);
memory[n] = result;
return result;
}
console.log(climbStairs(44));
【问题讨论】:
标签: javascript algorithm recursion closures memoization