當前位置:成語大全網 - 書法字典 - Python遞歸限制

Python遞歸限制

Python不能無限遞歸調用。當輸入值太大並且遞歸次數太多時,python會報告壹個錯誤。

首先,結論是python解釋器限制遞歸次數是為了避免“無限”調用導致的堆棧溢出。

尾部遞歸意味著在程序的最後壹步執行遞歸。這個函數叫做尾部遞歸函數。例如:

這個函數是普通的遞歸函數,遞歸後相乘。這種普通的遞歸,每次遞歸調用都會被推回壹個調用棧。

將上面的調用改為尾部遞歸函數。

尾遞歸的好處是每次都計算,結果傳遞給下壹次調用,然後調用任務結束,不會參與下壹次遞歸調用。在這種情況下,只有壹個堆棧被重用。因此,可以優化結構。即使重復,也不會出現堆棧溢出。這就是尾部遞歸優化。

C和c++都有這個優化,python沒有,所以限制調用次數,防止無限遞歸導致的堆棧溢出。

如果遞歸太多,導致初始錯誤,可以使用sys包手動設置遞歸的限制。

手動擴大recursionlimit限制: