34 lines
812 B
Plaintext
34 lines
812 B
Plaintext
_DEFINE F AS _UNSIGNED _INTEGER64
|
|
CLS
|
|
PRINT
|
|
PRINT "Enter 40 to more easily see the difference in calculation speeds."
|
|
PRINT
|
|
INPUT "Enter n for Fibonacci(n): ", n
|
|
PRINT
|
|
PRINT " Analytic Method (Fastest): F("; LTRIM$(STR$(n)); ") ="; fA(n)
|
|
PRINT "Iterative Method (Fast): F("; LTRIM$(STR$(n)); ") ="; fI(n)
|
|
PRINT "Recursive Method (Slow): F("; LTRIM$(STR$(n)); ") ="; fR(n)
|
|
END
|
|
|
|
' === Analytic Fibonacci Function (Fastest)
|
|
FUNCTION fA (n)
|
|
fA = INT(0.5 + (((SQR(5) + 1) / 2) ^ n) / SQR(5))
|
|
END FUNCTION
|
|
|
|
' === Iterative Fibonacci Function (Fast)
|
|
FUNCTION fI (n)
|
|
FOR i = 1 TO n
|
|
IF i < 3 THEN a = 1: b = 1
|
|
t = fI + b: fI = b: b = t
|
|
NEXT
|
|
END FUNCTION
|
|
|
|
' === Recursive Fibonacci function (Slow)
|
|
FUNCTION fR (n)
|
|
IF n <= 1 THEN
|
|
fR = n
|
|
ELSE
|
|
fR = fR(n - 1) + fR(n - 2)
|
|
END IF
|
|
END FUNCTION
|