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