【发布时间】:2017-04-10 13:08:56
【问题描述】:
以下代码在factorial 函数之外使用cache 对象。 factorial 函数本身很大,有太多关于查找阶乘和缓存的问题。
如何将此代码转换为高阶函数并在调用时生成相同的结果
console.log(factorial(5));
console.log(factorial(7));
cache = { }
function factorial(n) {
if (n === 0) {
return 1;
}
if (cache[n])
{
return cache[n];
}
console.log("Stack Up: " + n);
var value = n * factorial(n - 1);
console.log("Stack Down: " + value);
cache[n] = value;
return value;
}
console.log(factorial(5));
console.log(factorial(7));
【问题讨论】:
-
这种高阶函数通常被称为 memoize / memoization 对 google 来说是一个很好的关键字。
标签: functional-programming factorial higher-order-functions