first for Juuso Alho

first for Juuso Alho

by fosco

HTML

<form id="foo-bar">
    N: <input id="n" />
    <div id="result"></div>
    <input type="submit" value="Run"/>
</form>

JavaScript

$(document).ready(function() {
    /**
     * Recursion version of FooBar algorithm
     *
     * @param {number} [n=0] - how many iterations
     * @param {number} [i=0] - iterator
     * @param {[]} [out=[]] - output
     *
     * @returns {[]}
     */
    var getFooBarArray = function(n, i, out)
    {
        var str = '';
        i = i || 1;
        out = out || [];

        if (i > n) {
            return out;
        }

        if (i % 2 == 0) {
            str = 'foo';
        }

        if (i % 3 == 0) {
            str += (str == '' ? '' : ' ') + 'bar';
        }

        if (str === '') {
            str = i.toString();
        }

        out.push(str);

        return getFooBarArray(n, i + 1, out);
    };
    
    $("#foo-bar").submit(function(e) {
        e.preventDefault();
        var n = $("#n").val(),
            result = getFooBarArray(n);
        
        $("#result").text(result.join(', '));
    });
});