Задача: нахождение чисел Фибоначчи

Ответы на вопросы, чаще всего задаваемые в форумах VBStreets. Для тех, кому лень искать.
hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Задача: нахождение чисел Фибоначчи

Сообщение hCORe » 26.12.2004 (Вс) 16:22

Классическая олимпиадная (и не только) задача - нахождение чисел Фибоначчи. Число ряда Фибоначчи выражается формулой: F(n) = F(n-1)+F(n-2). При этом F(0) = 0, F(1) = 1.

Вот более подробное описание и формулы:
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
Моду создают модоки, а распространяют модозвоны.

Вернуться в Популярные вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList