Buscar..


Calcular el número de Fibonacci

Visual Basic.NET, como la mayoría de los lenguajes, permite la recursión, un proceso mediante el cual una función se llama a sí misma bajo ciertas condiciones.

Aquí hay una función básica en Visual Basic .NET para calcular los números 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

Esta función funciona al verificar primero si la función se ha llamado con el parámetro n igual a 1 o 2 . Por definición, los dos primeros valores en la secuencia de Fibonacci son 1 y 1, por lo que no es necesario realizar ningún cálculo adicional para determinar esto. Si n es mayor que 2, no podemos buscar el valor asociado tan fácilmente, pero sabemos que cualquier número de Fibonacci es igual a la suma de los dos números anteriores, por lo que los solicitamos por medio de la recursión (llamando a nuestra propia función de Fibonacci). Dado que las llamadas recursivas sucesivas son llamadas con números cada vez más pequeños a través de decrementos de -1 y -2, sabemos que eventualmente alcanzarán números menores a 2. Una vez que se alcanzan esas condiciones (llamadas casos base ), la pila se desenrolla y nosotros Consigue nuestro resultado final.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow