35 lines
727 B
Text
35 lines
727 B
Text
PROGRAM HOFSTADER_Q
|
|
|
|
!
|
|
! for rosettacode.org
|
|
!
|
|
|
|
DIM Q%[10000]
|
|
|
|
PROCEDURE QSEQUENCE(Q,FLAG%->SEQ$)
|
|
! if FLAG% is true accumulate sequence in SEQ$
|
|
! (attention to string var lenght=255)
|
|
! otherwise calculate values in Q%[] only
|
|
|
|
LOCAL N
|
|
Q%[1]=1
|
|
Q%[2]=1
|
|
SEQ$="1 1"
|
|
IF NOT FLAG% THEN Q=NUM END IF
|
|
FOR N=3 TO Q DO
|
|
Q%[N]=Q%[N-Q%[N-1]]+Q%[N-Q%[N-2]]
|
|
IF FLAG% THEN SEQ$=SEQ$+STR$(Q%[N]) END IF
|
|
END FOR
|
|
END PROCEDURE
|
|
|
|
BEGIN
|
|
NUM=10000
|
|
QSEQUENCE(10,TRUE->SEQ$)
|
|
PRINT("Q-sequence(1..10) : ";SEQ$)
|
|
QSEQUENCE(1000,FALSE->SEQ$)
|
|
PRINT("1000th number of Q sequence : ";Q%[1000])
|
|
FOR N=2 TO NUM DO
|
|
IF Q%[N]<Q%[N-1] THEN NN+=1 END IF
|
|
END FOR
|
|
PRINT("Number of Q(n)<Q(n+1) for n<=10000 : ";NN)
|
|
END PROGRAM
|