49 lines
601 B
Plaintext
49 lines
601 B
Plaintext
INT FUNC Fibonacci(INT n)
|
|
INT curr,prev,tmp
|
|
|
|
IF n>=-1 AND n<=1 THEN
|
|
RETURN (n)
|
|
FI
|
|
|
|
prev=0
|
|
IF n>0 THEN
|
|
curr=1
|
|
DO
|
|
tmp=prev
|
|
prev=curr
|
|
curr==+tmp
|
|
n==-1
|
|
UNTIL n=1
|
|
OD
|
|
ELSE
|
|
curr=-1
|
|
DO
|
|
tmp=prev
|
|
prev=curr
|
|
curr==+tmp
|
|
n==+1
|
|
UNTIL n=-1
|
|
OD
|
|
FI
|
|
RETURN (curr)
|
|
|
|
PROC Main()
|
|
BYTE n
|
|
INT f
|
|
|
|
Put(125) ;clear screen
|
|
|
|
FOR n=0 TO 22
|
|
DO
|
|
f=Fibonacci(n)
|
|
Position(2,n+1)
|
|
PrintF("Fib(%I)=%I",n,f)
|
|
|
|
IF n>0 THEN
|
|
f=Fibonacci(-n)
|
|
Position(21,n+1)
|
|
PrintF("Fib(%I)=%I",-n,f)
|
|
FI
|
|
OD
|
|
RETURN
|