What is the maximum recursion depth in Python, and how to increase it?

806    Asked by JosephSlater in Python , Asked on Apr 10, 2021

I have this tail-recursive function here:

def fib(n, sum):

    if n < 1>

        return sum

    else:

        return fib(n-1, sum+n)

c = 998

print(fib(c, 0))

It works up to n=997, then it just breaks and spits a "maximum recursion depth exceeded in comparison" RuntimeError. Is this just a stack overflow? Is there a way to get around it?

Answered by Joseph Slater

It is a guard against a stack overflow, yes. Python (or rather, the CPython implementation) doesn't optimize tail recursion, and unbridled max recursion depth python causes stack overflows. You can change the recursion limit with sys.setrecursionlimit, but doing so is risky -- the standard limit is a little conservative, but Python stack frames can be quite big.

Python isn't a functional language and tail recursion is not a particularly efficient technique. Rewriting the algorithm iteratively, if possible, is generally a better idea.



Your Answer

Interviews

Parent Categories