Der folgende Code verwendet ein Objekt cache
außerhalb der factorial
-Funktion. Die factorial
-Funktion selbst ist groß, was zu viele Bedenken hat, faktoriell und Caching zu finden.Wie kann ich diese große faktorielle Funktion in eine Funktion höherer Ordnung umwandeln?
Wie kann ich konvertieren diesen Code in eine Funktion höherer Ordnung und das gleiche Ergebnis erzeugen, wenn ich
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));
Eine solche Funktion höherer Ordnung typischerweise genannt * memoize */memoization ein gutes Stichwort ist zu googeln. – stholzm
Werfen Sie einen Blick auf [diese Beispiele] (http://stackoverflow.com/a/22578970/1048572) – Bergi