2015-11-17 15 views
7

Günümüzde ilginç özyineleme ve yığın taşması konusu ve Python'da maksimum yineleme derinliğini artırmanın herhangi bir yolu olup olmadığını merak ettim mi? n kullanarak özyineleme faktöriyelini bulmak için hızlı bir fonksiyonu Yazılan:Python'daki maksimum yineleme derinliğini nasıl artırdınız?

def factorial(n): 
    if n == 1: 
     return n 
    else: 
     return n * factorial(n-1) 

O faktöriyel (994) baş ama (995) faktöryel olamaz. Verilen hatadır:

RuntimeError: maximum recursion depth exceeded in comparison 

Açıkçası daha yüksek bir faktöryel argüman ve entrika uğruna, iteratif bulundu ancak edilebilir maksimum yineleme derinliği arttırılabilir?

+1

https://docs.python.org/2/library/sys.html#sys.setrecursionlimit burada çok fazla özyinelemeye kaçınmanın standart yol Memoization kullanmak olduğunu – freakish

+5

Not. –

+2

Hayır, burada hiç nefret yok. Hepimiz başkalarına yardım etmek için buradayız. Duba olarak kapanmak, senin * nefret ettiğimiz anlamına gelmez. Gelecekte en iyisi. –

cevap

8
import sys 

sys.setrecursionlimit(2000) 
5
import sys 

iMaxStackSize = 5000 
sys.setrecursionlimit(iMaxStackSize) 
İlgili konular