【发布时间】:2019-04-05 15:26:59
【问题描述】:
我正在尝试将阶乘函数与记忆化一起使用。我已从对象中获取最大值以减少递归调用的次数。但问题是第一次调用是我不知道这是否经过优化,因为第一次调用非常昂贵。对此的任何见解都会很棒。
let cache = {0: 1};
function factMemoize(key) {
if (!cache[key]) {
let maxVal = Object.keys(cache).reduce(function (a, b) {
return Math.max(a, b);
});
console.log(maxVal);
while (key >= maxVal) {
cache[key] = key * factMemoize(key - 1);
maxVal++;
}
}
return cache[key];
}
【问题讨论】:
-
这是一个学习练习吗?如果没有,而您只是在寻找更好的算法,请尝试迭代方法。你会发现它的效率要高得多。
标签: javascript performance factorial memoization