Triple Steps - CtCI 8.1

by Hari Menon

HTML

<pre id="output"></pre>

JavaScript

function fillArrayWithValues(count, value) {
    var arr = Array.apply(null, Array(count));
    return arr.map(function () {
        return value;
    });
}

function countWays(n, memo) {
    if (!memo) {
        memo = fillArrayWithValues(n + 1, -1);
    }

    if (n < 0) {
        return 0;
    } else if (n === 0) {
        return 1;
    } else if (memo[n] > -1) {
        return memo[n];
    } else {
        memo[n] = countWays(n - 1, memo) + countWays(n - 2, memo) + countWays(n - 3, memo);
        console.debug(memo);
        return memo[n];
    }
}

document.querySelector('#output').innerHTML = countWays(6);