Print Pascal's Triangle - Memoized

by Hari Menon

JavaScript

var cache = [];
function value(row, index) {
    if (cache[row] && cache[row][index] !== undefined) {
        return cache[row][index];
    }
    if (index < 0 || index > row) {
        return 0;
    }
    if (index === 1 || index === row) {
        return 1;
    }
    var result = value(row - 1, index - 1) + value(row - 1, index)
    if (cache[row] === undefined) {
        cache[row] = [];
    }
    cache[row][index] = result;
    return result;
}

function row(n) {
	var r = [];
    for (var i = 1; i <= n; i++) {
        r.push(value(n, i));
    }
    return r;
}

function pascalsTriangle(n) {
    for (var i=1; i <= n; i++) {
        console.log(row(i));
    }
}

pascalsTriangle(20);