var count = 0; var memoizer = function(memo, formula) { var recur = function(n) { var result = memo[n]; if (typeof result !== "number") { result = formula(n); memo[n] = result; } return result; }; return recur; }; var fibonacci = memoizer([0, 1], function(n) { return fibonacci(n - 1) + fibonacci(n - 2); }); console.log(fibonacci(10)); console.log("count: " + count);