以下代码使用factorial
函数之外的cache
对象。函数本身很大,对寻找阶乘和缓存有太多顾虑。如何将此大因子函数转换为更高阶的函数?
我怎么能这样的代码转换为高阶函数并产生相同的结果时,我打电话
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的* /记忆化是Google保持着良好的关键字的巨大时间差。 – stholzm
看看[这些例子](http://stackoverflow.com/a/22578970/1048572) – Bergi