Recherche…


Calculez le nième nombre de Fibonacci

Visuel Basic.NET, comme la plupart des langues, permet récursion, un processus par lequel une fonction elle - même appelle dans certaines conditions.

Voici une fonction de base dans Visual Basic .NET pour calculer les nombres de 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

Cette fonction vérifie d’abord si la fonction a été appelée avec le paramètre n égal à 1 ou 2 . Par définition, les deux premières valeurs de la séquence de Fibonacci sont 1 et 1, donc aucun calcul supplémentaire n'est nécessaire pour le déterminer. Si n est supérieur à 2, nous ne pouvons pas rechercher la valeur associée aussi facilement, mais nous savons qu'un tel nombre de Fibonacci est égal à la somme des deux nombres précédents. Nous les demandons donc par récursivité (appelant notre propre fonction Fibonacci). Comme les appels récursifs successifs sont appelés avec des nombres de plus en plus petits via des décréments de -1 et -2, nous savons qu'ils finiront par atteindre des nombres inférieurs à 2. Une fois que ces conditions (appelées cas de base ) sont atteintes, la pile se déroule obtenir notre résultat final



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow