There is a limit to the depth of possible recursion, which depends on the Python implementation. When the limit is reached, a RuntimeError exception is raised:
RuntimeError: Maximum Recursion Depth Exceeded
Here's a sample of a program that would cause this error:
def cursing(depth):
try:
cursing(depth + 1) # actually, re-cursing
except RuntimeError as RE:
print('I recursed {} times!'.format(depth))
cursing(0)
# Out: I recursed 1083 times!
It is possible to change the recursion depth limit by using
sys.setrecursionlimit(limit)
You can check what the current parameters of the limit are by running:
sys.getrecursionlimit()
Running the same method above with our new limit we get
sys.setrecursionlimit(2000)
cursing(0)
# Out: I recursed 1997 times!
From Python 3.5, the exception is a RecursionError, which is derived from RuntimeError.