以下代碼使用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