Factorial
by Hari Menon
HTML
<pre id="output"></pre>
JavaScript
var f = [];
function factorial(n) {
// Number should be non-negative
if (n < 0) {
return undefined;
}
// Initialize
if (!f.length) {
f = Array.apply(null, Array(n + 1)).map(Number.prototype.valueOf, -1);
f[0] = 0; // Set Base Case 1
f[1] = 1; // Set Base Case 2
}
if (f[n] > -1) {
// return memoized value
return f[n];
} else {
// compute factorial recursively
f[n] = factorial(n-1) * n;
return f[n];
}
}
document.querySelector('#output').innerHTML = factorial(5);