共用方式為


遞歸程式 (Visual Basic)

遞迴程序是指會呼叫自身的程序。 一般而言,這不是撰寫Visual Basic程式碼的最有效方式。

下列程式會使用遞歸來計算其原始自變數的因數。

Function Factorial(n As Integer) As Integer
    If n <= 1 Then
        Return 1
    End If
    Return Factorial(n - 1) * n
End Function

遞歸程序考慮事項

限制條件。 您必須設計遞歸程式,以測試至少一個可以終止遞歸的條件,而且您也必須處理在合理的遞歸呼叫數目內未滿足這類條件的情況。 如果條件中沒有至少一個可以確保滿足,您的程序就有很高的風險會進入無限迴圈。

記憶體使用量。 您的應用程式對於局部變數的空間有限。 每次程式呼叫本身時,都會使用更多空間來取得其局部變數的其他複本。 如果此程序無限期地繼續,則最終會導致 StackOverflowException 錯誤。

效率。 您幾乎一律可以使用迴圈,而不是遞歸。 循環沒有傳遞自變數、初始化其他記憶體和傳回值的額外負荷。 在沒有遞歸呼叫的情況下,您的效能可能更好。

相互遞歸。 如果兩個程式彼此呼叫,您可能會發現效能非常差,甚至是無限迴圈。 這類設計會呈現與單一遞歸程式相同的問題,但更難偵測和偵錯。

使用括號呼叫Function當程式以遞歸方式呼叫本身時,即使沒有自變數清單,您也必須遵循具有括號的程序名稱。 否則,會採用函式名稱來表示函式的傳回值。

測試。 如果您撰寫遞歸程式,您應該非常仔細地測試它,以確保它一律符合一些限制條件。 您也應該確保不會因為遞迴呼叫太多而導致記憶體不足。

另請參閱