JSFiddle - React, Tailwind, and code Playground

by bhupendra negi

JavaScript

const fact = memory( x => {
  if (x === 1) return 1;
  else {
    return x * fact(x - 1);
  }
})

// memorization
function memory(fn) {
  let cache = {};

  function inner(x) {
    if (cache[x]) {
      console.log(`fetching from cache ... for ${x}`);
      return cache[x];
    } else {
      console.log(`calculating .... for ${x}`);
      let result = fn(x);
      cache[x] = result;
     return result;
    }

  }
  return inner;
}


console.dir(fact);


console.log(fact(8));
console.log(fact(5));
console.log(fact(4));
console.log(fact(3));