Zoeken…


Bereken nde Fibonacci-nummer

Visual Basic.NET staat, zoals de meeste talen, recursie toe, een proces waarbij een functie zichzelf onder bepaalde voorwaarden aanroept.

Hier is een basisfunctie in Visual Basic .NET om Fibonacci- nummers te berekenen.

''' <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

Deze functie werkt door eerst te controleren of de functie is opgeroepen met de parameter n gelijk aan 1 of 2 . Per definitie zijn de eerste twee waarden in de Fibonacci-reeks 1 en 1, dus is geen verdere berekening nodig om dit te bepalen. Als n groter is dan 2, kunnen we de bijbehorende waarde niet zo gemakkelijk opzoeken, maar we weten dat een dergelijk Fibonacci-nummer gelijk is aan de som van de voorgaande twee nummers, dus we vragen deze aan via recursie (onze eigen Fibonacci-functie aanroepen). Omdat opeenvolgende recursieve oproepen met kleinere en kleinere nummers worden geroepen via afnames van -1 en -2, weten we dat ze uiteindelijk nummers zullen bereiken die kleiner zijn dan 2. Zodra die voorwaarden ( basisgevallen genoemd) worden bereikt, wordt de stapel afgewikkeld en krijg ons eindresultaat.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow