Visual Basic .NET Language
Rekursion
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.