创建递归过程

过程只有有限的空间量供变量使用。 过程每次调用自身时,都会有更多空间被占用。 调用自身的过程称为递归过程。 不断调用自身的递归过程最终会导致错误。 例如:

Function RunOut(Maximum) 
    RunOut = RunOut(Maximum) 
End Function

当两个过程无限期地相互调用或者永远无法满足某个用于限制递归的条件时,此错误可能不太明显。 递归确实有它自己的用途。 例如,以下过程使用递归函数来计算阶乘。

Function Factorial (N) 
    If N <= 1 Then ' Reached end of recursive calls. 
        Factorial = 1 ' (N = 0) so climb back out of calls. 
    Else ' Call Factorial again if N > 0. 
        Factorial = Factorial(N - 1) * N 
    End If 
End Function

应测试递归过程以确保它不会太多次调用自身从而导致内存不足。 如果出现错误,请确保您的过程没有无限期地调用它自身。 随后,尝试通过以下方法节省内存:

  • 消除不必要的变量。
  • 使用除 Variant 之外的数据类型
  • 重新评估过程逻辑。 通常可以用嵌套循环代替递归。

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。