korbok,  оптимальнее запоминать результат ...
 
var fn = function() {
    var a = [0, 1, 2];
    return function c(b) {
        if (b >= a.length) {
            var d = a.slice(-3).reduce(function(a, b) {
                return a + b
            });
            a.push(d);
            return c(b)
        }
        return a[b]
    }
}();
alert( [fn(0),fn(1),fn(2),fn(3),fn(4),fn(5),fn(6),fn(7),fn(8)] ); //0,1,2,3,6,11,20,37,68