RosettaCodeData/Task/Hofstadter-Q-sequence/Visual-FoxPro/hofstadter-q-sequence.fvp

29 lines
515 B
Plaintext

LOCAL p As Integer, i As Integer
CLEAR
p = 0
? "Hofstadter Q Sequence"
? "First 10 terms:"
FOR i = 1 TO 10
?? Q(i, @p)
ENDFOR
? "1000th term:", Q(1000, @p)
? "100000th term:", q(100000, @p)
? "Number of terms less than the preceding term:", p
FUNCTION Q(n As Integer, k As Integer) As Integer
LOCAL i As Integer
LOCAL ARRAY aq[n]
aq[1] = 1
IF n > 1
aq[2] = 1
ENDIF
k = 0
FOR i = 3 TO n
aq[i] = aq[i - aq[i-1]] + aq[i-aq[i-2]]
IF aq(i) < aq(i-1)
k = k + 1
ENDIF
ENDFOR
RETURN aq[n]
ENDFUNC