1. 程式人生 > >python遞迴深度問題

python遞迴深度問題

今日在leetcode刷題的過程中,出現了程式碼邏輯無誤,但超過遞迴最大深度。
分析資料得出,有一組資料會出現遞迴1W次的情況,而python對於最大遞迴深度是有限制的

python最大遞迴深度限制可以查詢:

import sys
sys.getrecursionlimit()  # output:1000

由上述程式碼可以發現,python的最大遞迴深度被限制為了1000

但是實際使用中,可能會出現未達到1000就報錯的情況,如下例程式碼:

>>> def recursion(n):
    print n
    recursion(n+1)
>>> 
recursion(0) # 輸出最大到972(python2.7.14) or 977(python 3.6.3)
def recursion(n):
    if(n <= 0):
        return
    print n
    recursion(n - 1)

if __name__ == "__main__":
    recursion(1000)  # 輸出最大到998(python2.7.14)

具體修改最大遞迴深度的函式百度上很容易找到,這就不寫了,但是遞迴太深其實是很佔系統資源的,還是建議改成迴圈處理吧