編程語言中的一種函數
遞歸函數是編程語言中的一種函數,其特點是函數直接或間接調用自身。這種函數在執行過程中會反覆調用自身,每調用一次就進入新的一層,直到遇到遞歸終止條件,即基本情況,此時函數開始返回結果。遞歸函數能夠解決那些可以被分解成更小、類似的子問題的問題,通過將大問題分解爲更小的相同問題,並在每個子問題上調用自身,逐步解決問題的規模,直到最終解決整個問題。
遞歸函數的設計需要滿足兩個基本要素:
邊界條件:確定遞歸到何時終止,也稱爲遞歸出口。
遞歸模式:大問題是如何分解成小問題的,也成爲遞歸體。
遞歸函數的調用過程類似於多箇函數的嵌套調用,只不過調用函數和被調函數是同一個函數。爲保證遞歸函數的順利進行,系統需設立一箇工作棧。遞歸調用的內部執行過程包括爲遞歸函數建立一箇工作棧、每次執行遞歸函數之前把相關信息壓棧、每次遞歸結束後將棧頂元素彈出。
需要注意的是,遞歸函數必須有結束條件,以防止無限遞歸導致的資源消耗。如果遞歸函數沒有在某個地方存在能夠返回上一層函數的代碼,那麼程序將永遠不會停止,這種情況被稱爲死遞歸,是編程中的大忌。