递归算法实例

递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,递归函数就是直接或间接调用自身的函数,也就是自身调用自己的函数。

递归调用

Sub VBAHOMETOP_Test()
    Debug.Print recursionSum(100)
    '递归求和
    Debug.Print recursionMulity(10)
    '递归求阶乘
    Debug.Print Fibonacci(10)
    '递归求菲波那切数列
End Sub

示例1:递归求和 1+2+3+…+n

Function recursionSum(n As Integer)
    If n = 1 Then
        recursionSum = 1
        '和值为1,即n=1时
    Else
        recursionSum = n + recursionSum(n - 1)
        '递归求和的原理就是n + (n-1)的和值,以此类推
    End If
End Function

示例2:递归阶乘 n! = n * (n-1) * (n-2) * …* 1 (n>0)

Function recursionMulity(n As Integer)
    If n = 1 Then
        recursionMulity = 1 
        '阶乘值为1,即n=1时
    Else
        recursionMulity = n * recursionMulity(n - 1)
        '阶乘可以分解为n*(n-1)!的阶乘,这是递归算法的核心
    End If
End Function

示例3:斐波那契数列长这个样子:1 1 2 3 5 8 13 21 34 55….. n

Function Fibonacci(n As Integer)
    If n = 1 Or n = 2 Then
        Fibonacci = 1
        '斐波那契数列的第一项和第二项均为1,即n=1或2时
    Else
        Fibonacci = Fibonacci(n - 1) + Fibonacci(n - 2)
        '项数大于2时,为前2项的和
    End If
End Function

Leave a Reply

Your email address will not be published. Required fields are marked *