1 2 3 4 5 6 7 8 9 10 11 12 13 14
function memoize(fn) { const cache = {}; return function(n) { if (n in cache) return cache[n]; cache[n] = fn(n); return cache[n]; }; } const fib = memoize(function(n) { return n < 2 ? n : fib(n - 1) + fib(n - 2); }); console.log(fib(50)); // 12586269025