diff --git a/code_to_optimize/js/code_to_optimize_js_esm/fibonacci.js b/code_to_optimize/js/code_to_optimize_js_esm/fibonacci.js index 0ee526315..50e4ee39a 100644 --- a/code_to_optimize/js/code_to_optimize_js_esm/fibonacci.js +++ b/code_to_optimize/js/code_to_optimize_js_esm/fibonacci.js @@ -10,10 +10,20 @@ * @returns {number} The nth Fibonacci number */ export function fibonacci(n) { - if (n <= 1) { - return n; + const cache = new Map(); + function fib(k) { + if (k <= 1) { + return k; + } + const cached = cache.get(k); + if (cached !== undefined) { + return cached; + } + const result = fib(k - 1) + fib(k - 2); + cache.set(k, result); + return result; } - return fibonacci(n - 1) + fibonacci(n - 2); + return fib(n); } /**