建立遞迴程式

程式變數空間有限。 每次程式呼叫本身時,就會使用更多空間。 呼叫本身的程式是遞迴程式。 持續呼叫本身的遞迴程式最終會造成錯誤。 例如:

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 支援與意見反應