计算第 n 个斐波纳契数
与大多数语言一样,Visual Basic.NET 允许递归,这是一个函数在某些条件下调用自身的过程。
这是 Visual Basic .NET 中用于计算 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
此函数首先检查是否已使用参数 n
等于 1
或 2
调用该函数。根据定义,Fibonacci 序列中的前两个值是 1 和 1,因此不需要进一步计算来确定这一点。如果 n
大于 2,我们就不能轻易查找相关值,但我们知道任何这样的 Fibonacci 数等于前两个数的总和,所以我们通过递归请求它们 (调用我们自己的 Fibonacci 函数)。由于连续的递归调用通过递减 -1 和 -2 来调用越来越少的数字,我们知道最终它们将达到小于 2 的数字。一旦达到这些条件(称为基本情况 ),堆栈就会展开,我们得到我们的最终结果。