38 lines
627 B
Plaintext
38 lines
627 B
Plaintext
'
|
|
' Compute nth Fibonacci number
|
|
'
|
|
' open a window for display
|
|
OPENW 1
|
|
CLEARW 1
|
|
' Display some fibonacci numbers
|
|
' Fib(46) is the largest number GFA Basic can reach
|
|
' (long integers are 4 bytes)
|
|
FOR i%=0 TO 46
|
|
PRINT "fib(";i%;")=";@fib(i%)
|
|
NEXT i%
|
|
' wait for a key press and tidy up
|
|
~INP(2)
|
|
CLOSEW 1
|
|
'
|
|
' Function to compute nth fibonacci number
|
|
' n must be in range 0 to 46, inclusive
|
|
'
|
|
FUNCTION fib(n%)
|
|
LOCAL n0%,n1%,nn%,i%
|
|
n0%=0
|
|
n1%=1
|
|
SELECT n%
|
|
CASE 0
|
|
RETURN n0%
|
|
CASE 1
|
|
RETURN n1%
|
|
DEFAULT
|
|
FOR i%=2 TO n%
|
|
nn%=n0%+n1%
|
|
n0%=n1%
|
|
n1%=nn%
|
|
NEXT i%
|
|
RETURN nn%
|
|
ENDSELECT
|
|
ENDFUNC
|