Вот более подробное описание и формулы:
http://www.everyday.com.ua/digilet/fibonacci.htm
Следующие функции принимают значения от 0 до 100 и возвращают значение числа ряда Фибоначчи для заданного n. Последний, третий вариант решения представлен в виде непосредственного кода, без оформления в виде функции (inline.)
1)
- Код: Выделить всё
Public Function Fib(Nmb As Long) As Double
If Nmb = 0 Then Fib = 0: Exit Function
If Nmb = 1 Then Fib = 1: Exit Function
Fib = Round((1.6180339 ^ Nmb - 0.6180339 ^ Nmb) / _
2.236067977, 0)
End Function
2)
- Код: Выделить всё
Public Function Fib(Nmb As Long) As Double
Dim s0 As Double, s1 As Double, s As Double, j As Double
If i = 0 Then f = 0: Exit Function
s0 = 1
For j = 1 To i
s = s1 + s0
s0 = s1
s1 = s
DoEvents
Next
Fib = s
End Function
3) *inline*
- Код: Выделить всё
Dim f(100) As Double, i As Long
f(1) = 1
For i = 0 To 100
On Error Resume Next
f(i) = f(i - 1) + f(i - 2)
Debug.Print i & " - " & f(i)
Next