diff --git a/code_to_optimize_js/fibonacci.js b/code_to_optimize_js/fibonacci.js index b0ab2b51c..701ad1c88 100644 --- a/code_to_optimize_js/fibonacci.js +++ b/code_to_optimize_js/fibonacci.js @@ -9,10 +9,20 @@ * @returns {number} - The nth Fibonacci number */ function fibonacci(n) { - if (n <= 1) { - return n; + const cache = new Map(); + function fib(x) { + if (x <= 1) { + return x; + } + const cached = cache.get(x); + if (cached !== undefined) { + return cached; + } + const result = fib(x - 1) + fib(x - 2); + cache.set(x, result); + return result; } - return fibonacci(n - 1) + fibonacci(n - 2); + return fib(n); } /**