Archive - Originally posted on "The Horse's Mouth" - 2006-11-02 01:10:25 - Graham Ellis
I'm not a great advocate of recursion - pieces of code that call themselves; most of the examples that I see in books are "training examples" that are over complex and achieve results that could much more easily be achieved by alternative means. I'm not telling you NEVER to use recursion - sometimes (such as when you're traversing XML, for example) it does work very well.
Anyway - one of the dangers of code that calls itself is that it will get into an endless loop and so there will be a limit to the number of levels deep you can go. That defaults to 1000 in Python, but you can increase it - there's a setrecursionlimit method in the sys class. Here's an example of it in use:
# Python defaults to a recursion limit of 1000 levels, which
# you can change - see this example. Beware - it's said
# that the standard windows build has a hard limit of 2000
# that you cannot exceed!
import sys
sys.setrecursionlimit(1500)
def zz(x):
if x < 1: return 0
result = zz(x-1) + x
return result
print zz(1200)
Without that extra line, you get the error message
RuntimeError: maximum recursion depth exceeded
when you run the code
Illustration - delegates on one of our Python Programming Courses