Visual Basic .NET Language
Рекурсия
Поиск…
Вычислить 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. Как только эти условия (называемые базовыми случаями ) будут достигнуты, пакет распадается, и мы получить наш окончательный результат.