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);