cache = {1:1, 2:1} Q = function(n) if not cache.hasIndex(n) then q = Q(n - Q(n-1)) + Q(n - Q(n-2)) cache[n] = q end if return cache[n] end function for i in range(1,10) print "Q(" + i + ") = " + Q(i) end for print "Q(1000) = " + Q(1000)