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