Fibonacci n-step number sequences: Difference between revisions

Added FreeBASIC
m (→‎{{header|Sidef}}: minor code simplifications)
(Added FreeBASIC)
Line 1,158:
1 1 2 4
1 1 2 4 8 15 29 56 108 208
</pre>
 
=={{header|FreeBASIC}}==
<lang freebasic>' FB 1.05.0 Win64
 
' Deduces the step, n, from the length of the dynamic array passed in
' and fills it out to 'size' elements
Sub fibN (a() As Integer, size As Integer)
Dim lb As Integer = LBound(a)
Dim ub As Integer = UBound(a)
Dim length As Integer = ub - lb + 1
If length < 2 OrElse length >= size Then Return
ub = lb + size - 1
Redim Preserve a(lb To ub)
Dim sum As Integer
For i As Integer = lb + length to ub
sum = 0
For j As Integer = 1 To Length
sum += a(i - j)
Next j
a(i) = sum
Next i
End Sub
 
Sub printSeries(a() As Integer, name_ As String) '' name is a keyword
Print name_; " =>";
For i As Integer = LBound(a) To UBound(a)
Print Using "####"; a(i);
Print " ";
Next
Print
End Sub
 
Const size As Integer = 13 '' say
Redim a(1 To 2) As Integer
a(1) = 1 : a(2) = 1
fibN(a(), size)
printSeries(a(), "fibonacci ")
Redim Preserve a(1 To 3)
a(3) = 2
fibN(a(), size)
printSeries(a(), "tribonacci")
Redim Preserve a(1 To 4)
a(4) = 4
fibN(a(), size)
printSeries(a(), "tetranacci")
erase a
Redim a(1 To 2)
a(1) = 2 : a(2) = 1
fibN(a(), size)
printSeries(a(), "lucas ")
Print
Print "Press any key to quit"
Sleep</lang>
 
{{out}}
<pre>
fibonacci => 1 1 2 3 5 8 13 21 34 55 89 144 233
tribonacci => 1 1 2 4 7 13 24 44 81 149 274 504 927
tetranacci => 1 1 2 4 8 15 29 56 108 208 401 773 1490
lucas => 2 1 3 4 7 11 18 29 47 76 123 199 322
</pre>
 
9,492

edits