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