建立遞迴程式
程式 的 變數空間有限。 每次程式呼叫本身時,就會使用更多空間。 呼叫本身的程式是遞迴程式。 持續呼叫本身的遞迴程式最終會造成錯誤。 例如:
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 支援與意見反應。