Ricerca…


Calcola n numero di Fibonacci

Visual Basic.NET, come la maggior parte delle lingue, permette la ricorsione, un processo mediante il quale una funzione chiama se stessa in determinate condizioni.

Ecco una funzione di base in Visual Basic .NET per calcolare i numeri di Fibonacci .

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

Questa funzione funziona controllando innanzitutto se la funzione è stata chiamata con il parametro n uguale a 1 o 2 . Per definizione, i primi due valori nella sequenza di Fibonacci sono 1 e 1, quindi non è necessario alcun ulteriore calcolo per determinarlo. Se n è maggiore di 2, non possiamo cercare facilmente il valore associato, ma sappiamo che qualsiasi numero di Fibonacci è uguale alla somma dei due numeri precedenti, quindi li richiediamo tramite ricorsione (chiamando la nostra funzione Fibonacci). Poiché le chiamate ricorsive successive vengono chiamate con numeri sempre più piccoli tramite decrementi di -1 e -2, sappiamo che alla fine raggiungeranno numeri inferiori a 2. Una volta che tali condizioni (chiamate casi base ) vengono raggiunte, lo stack si svolge e noi ottieni il nostro risultato finale.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow