Szukaj…


Oblicz n-tą liczbę Fibonacciego

Visual Basic.NET, podobnie jak większość języków, zezwala na rekurencję, proces, w którym funkcja wywołuje się pod pewnymi warunkami.

Oto podstawowa funkcja w Visual Basic .NET do obliczania liczb Fibonacciego .

''' <summary>
''' Gets the n'th Fibonacci number
''' </summary>
''' <param name="n">The 1-indexed ordinal number of the Fibonacci sequence that you wish to receive. Precondition: Must be greater than or equal to 1.</param>
''' <returns>The nth Fibonacci number. Throws an exception if a precondition is violated.</returns>
Public Shared Function Fibonacci(ByVal n as Integer) as Integer
    If n<1
        Throw New ArgumentOutOfRangeException("n must be greater than or equal to one.")
    End If
    If (n=1) or (n=2)
        ''Base case. The first two Fibonacci numbers (n=1 and n=2) are both 1, by definition.
        Return 1
    End If
    ''Recursive case.
    ''Get the two previous Fibonacci numbers via recursion, add them together, and return the result.
    Return Fibonacci(n-1) + Fibonacci(n-2)
End Function

Ta funkcja działa, sprawdzając najpierw, czy funkcja została wywołana z parametrem n równym 1 lub 2 . Z definicji dwie pierwsze wartości w sekwencji Fibonacciego to 1 i 1, więc żadne dalsze obliczenia nie są konieczne do ustalenia tego. Jeśli n jest większe niż 2, nie możemy tak łatwo wyszukać powiązanej wartości, ale wiemy, że każda taka liczba Fibonacciego jest równa sumie dwóch poprzednich liczb, więc żądamy ich poprzez rekurencję (wywoływanie własnej funkcji Fibonacciego). Ponieważ kolejne wywołania rekurencyjne są wywoływane z coraz mniejszymi liczbami poprzez zmniejszenie wartości -1 i -2, wiemy, że ostatecznie osiągną liczby mniejsze niż 2. Po osiągnięciu tych warunków (zwanych przypadkami podstawowymi ) stos się rozwija i uzyskaj nasz końcowy wynik.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow