您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Python中怎么實現遞歸調用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
當函數返回時,要從調用棧的棧頂取得返回地址,恢復現場,彈出棧幀,按地址返回
Python中的遞歸深度限制
調用棧也是要占據內存的,所以也不可能設置過大,對調用棧大小Python是有限制的(開始默認1000)
在調試遞歸算法的時候,經常會出現這樣的錯誤:
RecursionError: maximum recursion depth exceeded while calling a Python object
導致這個錯誤的原因就是遞歸的層次太多,系統調用棧的大小有限
導致這個錯誤的原因有兩個情況:
情況一:沒有設置基本結束條件
Traceback (most recent call last): File "c:\Users\hy\Desktop\daily\daily.py.py", line 15, in <module> tell_story() File "c:\Users\hy\Desktop\daily\daily.py.py", line 12, in tell_story tell_story() File "c:\Users\hy\Desktop\daily\daily.py.py", line 12, in tell_story tell_story() File "c:\Users\hy\Desktop\daily\daily.py.py", line 12, in tell_story tell_story() [Previous line repeated 993 more times] File "c:\Users\hy\Desktop\daily\daily.py.py", line 11, in tell_story print("“從前有座山,山上有個廟,廟里有個老和尚,他說:”")RecursionError: maximum recursion depth exceeded while calling a Python object
06
情況二:程序本身沒錯,但是程序向基本結束條件演進的速度太慢了
例如:調用棧深度1000, 但此刻數列求和函數計算2000個數,那就不行了
06
調整調用棧深度
在python中利用sys內置模塊可以調整調用棧的深度
sys.getrecursionlimit( ) 獲取調用棧深度
sys.setrecursionlimit(n) 修改調用棧深度
上述就是小編為大家分享的Python中怎么實現遞歸調用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。