2015-11-17 3 views
7

Интересная тема рекурсии и переполнения стека в классе сегодня, и я задавался вопросом, есть ли способ увеличить максимальную глубину рекурсии в Python? Написал функцию быстрого нахождения факториала п с помощью рекурсии:Как вы можете увеличить максимальную глубину рекурсии в Python?

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

Он может справиться с факториала (994), но не факториал (995). Ошибка получили в жизни:

RuntimeError: maximum recursion depth exceeded in comparison 

Очевидно, что более высокий факториала можно найти итеративно, но, ради аргумента и интриг, может максимальная глубина рекурсии быть увеличена?

+1

https://docs.python.org/2/library/sys.html#sys.setrecursionlimit – freakish

+5

Обратите внимание, что стандартный способ избежать слишком много рекурсии здесь использовать запоминание. –

+2

Нет, здесь нет ненависти. Мы все здесь, чтобы помогать другим. Закрытие в качестве обмана не означает, что мы ненавидим вас. Все лучшее в будущем. –

ответ

5
import sys 

iMaxStackSize = 5000 
sys.setrecursionlimit(iMaxStackSize) 
Смежные вопросы