ajmorgan
5/20/2016 - 8:11 PM

memorizer.js

var memoizer = function (init_mem, f) {
  var memoizer_helper = function(x) {
    var val = init_mem[x];
    if (val === undefined) {
      val = f(memoizer_helper, x);
      init_mem[x] = val;
    }
    return val;
  };
  return memoizer_helper;
};

var fib_memoizer = memoizer([0, 1], function(fib, n) {
  return fib(n - 1) + fib(n - 2);
});

console.log(fib_memoizer(10));

var fac_memoizer = memoizer([1, 1], function(fac, n) {
  return n * fac(n - 1);
});

console.log(fac_memoizer(5));