Fibonacci sequence: Difference between revisions

Content added Content deleted
No edit summary
(Added to Yabasic recursive, analytical and sequence methods using the Binet formula)
Line 3,309: Line 3,309:


==={{header|Yabasic}}===
==={{header|Yabasic}}===
====Iterative====
<syntaxhighlight lang="yabasic">sub fibonacci (n)
<syntaxhighlight lang="vbnet">sub fibonacciI (n)
local n1, n2, k, sum

n1 = 0
n1 = 0
n2 = 1
n2 = 1
Line 3,317: Line 3,320:
n2 = sum
n2 = sum
next k
next k
if n < 0 then
if n < 1 then
return n1 * ((-1) ^ ((-n) + 1))
return n1 * ((-1) ^ ((-n) + 1))
else
else
return n1
return n1
end if
end if
end sub</syntaxhighlight>

====Recursive====
Only positive numbers
<syntaxhighlight lang="vbnet">sub fibonacciR(n)
if n <= 1 then
return n
else
return fibonacciR(n-1) + fibonacciR(n-2)
end if
end sub</syntaxhighlight>

====Analytic====
Only positive numbers
<syntaxhighlight lang="vbnet">sub fibonacciA (n)
return int(0.5 + (((sqrt(5) + 1) / 2) ^ n) / sqrt(5))
end sub</syntaxhighlight>

====Binet's formula====
Fibonacci sequence using the Binet formula
<syntaxhighlight lang="vbnet">sub fibonacciB(n)
local sq5, phi1, phi2, dn1, dn2, k

sq5 = sqrt(5)
phi1 = (1 + sq5) / 2
phi2 = (1 - sq5) / 2
dn1 = phi1: dn2 = phi2
for k = 0 to n
dn1 = dn1 * phi1
dn2 = dn2 * phi2
print int(((dn1 - dn2) / sq5) + .5);
next k
end sub</syntaxhighlight>
end sub</syntaxhighlight>