Поиск…


Вычислить n-й номер Фибоначчи

Visual Basic.NET, как и большинство языков, разрешает рекурсию, процесс, с помощью которого функция вызывает себя при определенных условиях.

Вот базовая функция в Visual Basic .NET для вычисления чисел Фибоначчи .

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

Эта функция работает, сначала проверяя, была ли вызвана функция с параметром n равным 1 или 2 . По определению первые два значения в последовательности Фибоначчи равны 1 и 1, поэтому для определения этого не требуется никаких дальнейших вычислений. Если n больше 2, мы не можем легко найти связанное значение, но мы знаем, что любое такое число Фибоначчи равно сумме двух предыдущих чисел, поэтому мы запрашиваем их через рекурсию (вызывая нашу собственную функцию Фибоначчи). Поскольку последовательные рекурсивные вызовы вызываются с меньшими и меньшими числами с помощью декретов -1 и -2, мы знаем, что в конечном итоге они достигнут чисел, которые меньше 2. Как только эти условия (называемые базовыми случаями ) будут достигнуты, пакет распадается, и мы получить наш окончательный результат.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow