Fibonacci Sequence Generator
Martin Combs Verde Valley School Sedona, AZ 86336
Here is a program for readers who like to crunch large numbers. It was done on a 16K TRS-80 Model I.
10 REM FIBONACCI SEQUENCE GENERATOR
20 REM BY MARTIN COMBS, VERDE VALLEY SCHOOL, SEDONA AZ 86336
30 REM FIBONACCI SEQUENCES ARE GENERATED RECURSIVELY
40 REM EACH TERM IS THE SUM OF THE TWO PREVIOUS TERMS.
50 REM FOR "THE" FIBONACCI SEQUENCE THE FIRST TWO TERMS
60 REM ARE BOTH 1, BUT OTHER SEQUENCES ARE POSSIBLE.
70 REM THIS PROGRAM WILL ONLY START WITH SINGLE DIGITS
80 REM TO SEE RESULTS, HIT BREAK, TYPE IN F-l, THEN C0NT.
90 REM TO USE PRINTER, HIT BREAK, TYPE IN F-2, THEN CONT.
100 REM THE PROGRAM RUNS FASTER, BUT INVISIBLY, IF
: rem 1000 digits are plenty, but you can have more.
120 PRINT "WHAT POSITIVE INTEGER LESS THAN 10 DO YOU WANT"
130 INPUT "AS THE FIRST TERM OF THE FIBONACCI
SEQUENCE"; A(l) 140 PRINT "WHAT POSITIVE INTEGER LESS THAN 10 DO YOU WANT"
150 input "as the second term"; B(l) 160 K-3
: rem k is the number of the term in the sequence 170 D-2 + int(k / 4.78)
: REM D IS ALWAYS 1 OR 2 MORE THAN THE NUMBER OF DIGITS IN THE TERM BEING CALCULATED. 180 FOR I«1 TO D 190 S(I)=A(I) + B(I) + C
: rem the recursive formula. c is the carry. 200 C=0
: rem reinitialize the carry. 210 if s(i)>9 then s(i)=s(i) - 10
230 IF F=0 GOTO 310
: rem suppresses the output to increase speed. 240 for i-d to 1 step -1
: REM LOOP PRINTS RESULTS. 250 IF S(I)=0 AND G-0 GOTO 280
: REM LINES 250, 260, 300 SUPPRESS LEADING ZEROS IN OUTPUT. 260 G-l
270 if f»1 then print right$(str$(s(i)),1); else lprint right$(str$(s(i)), 1); 280 next
290 if F=1 then print else lprint 300 G=0 310 K-K+l
: REM NEWLY CALCULATED TERMS BECOME INPUTS FOR NEXT TERM.
320 IF F=0 THEN PRINT "FIBONACCI TERM #"; K; "IS BEING CALCULATED" ELSE IF F-1THEN PRINT "FIBONACCI TERM #"; K; "IS:" ELSE LPRINT "FIBONACCI TERM #"; K; "IS:" 330 GOTO 170 J3
Post a comment