Sök…


Beräkna nionde Fibonacci-nummer

Visual Basic.NET, som de flesta språk, tillåter rekursion, en process genom vilken en funktion kallar sig under vissa förhållanden.

Här är en grundläggande funktion i Visual Basic .NET för att beräkna Fibonacci- nummer.

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

Denna funktion fungerar genom att först kontrollera om funktionen har anropats med parametern n lika med 1 eller 2 . Per definition är de första två värdena i Fibonacci-sekvensen 1 och 1, så ingen ytterligare beräkning är nödvändig för att bestämma detta. Om n är större än 2 kan vi inte leta upp det tillhörande värdet lika enkelt, men vi vet att något sådant Fibonacci-nummer är lika med summan av de tidigare två siffrorna, så vi begär de via rekursion (kallar vår egen Fibonacci-funktion). Eftersom på varandra följande rekursiva samtal kallas med mindre och mindre nummer via minskningar av -1 och -2, vet vi att de så småningom kommer att nå siffror som är mindre än 2. När dessa villkor (kallas basfall ) har uppnåtts, rullar stacken upp och vi få vårt slutliga resultat.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow