Memoization In Javascript
function memoize(f) {
return function () {
var args = Array.prototype.slice.call(arguments);
f.memoized = f.memoized || {};
return (args in f.memoized) ?
f.memoized[args] :
f.memoized[args] = f.apply(this, args);
};
}