Python中遞歸的最大次數


昨天在逛豆瓣的時候,看到一個同學問遞歸最多達到多少次,因為在他跑的時候,次數有時多有時少,以前沒有想過這個問題。那就自己動手在驗證驗證, 代碼如下:

def recursion(n): 
    if(n <= 0): 
        return 
    print n 
    recursion(n - 1) 

if __name__ == "__main__":
    recursion(1000)

當在我自己的機器運行以上代碼時,發現最多能打印到998,然后就會拋出 “RuntimeError: maximum recursion depth exceeded” 的錯誤了。 嘿,還真有限制。但轉念一想,python不會這么弱吧。經過一番查找,發現這是python專門設置的一種機制用來防止無限遞歸造成Python溢出崩潰, 最大遞歸次數是可以重新調整的。 (http://docs.python.org/2/library/sys.html#sys.setrecursionlimit),修改代碼如下:

import sys
sys.setrecursionlimit(1500)  # set the maximum depth as 1500

def recursion(n): 
    if(n <= 0): 
        return 
    print n 
    recursion(n - 1) 

if __name__ == "__main__":
    recursion(1200)

再次運行,順利通過!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM