RosettaCodeData/Task/Hofstadter-Q-sequence/CoffeeScript/hofstadter-q-sequence.coffee

12 lines
303 B
CoffeeScript

hofstadterQ = do ->
memo = [ 1 ,1, 1]
Q = (n) ->
result = memo[n]
if typeof result != 'number'
result = memo[n] = Q(n - Q(n - 1)) + Q(n - Q(n - 2))
result
# some results:
console.log 'Q(' + i + ') = ' + hofstadterQ(i) for i in [1..10]
console.log 'Q(1000) = ' + hofstadterQ(1000)