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