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=" |
<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 < |
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> |
||