Memoization Visualizer

1. Checking

Object has (n)?

2. Heavy Function

Fib(n)

Object (Cache)

{
}

3. Result Return

---

Call Stack (Pending)

Recursion Details

Standing by...
Base Case?
(n <= 1)
Summing Logic
fib(n-1) + fib(n-2)
const memoizedFib = (() => {
  const cache = {};

  return function(n) {
    if (n in cache) {
      return cache[n];
    }

    const result = fib(n);
    cache[n] = result;
    return result;
  };

  // Internal fib ensuring both base cases (0, 1) are cached
  function fib(n) {
    if (n in cache) return cache[n];
    if (n === 0) return (cache[0] = 0);
    if (n === 1) {
      cache[0] = 0; 
      return (cache[1] = 1);
    }

    cache[n] = fib(n - 1) + fib(n - 2);
    return cache[n];
  }
})();