Python, IDLE: Too many recursive errors
Question: This is supposedly a problem with the IDLE editor for Python. (I'm running
Python 3.3.0 on OSX, but the same problem occurs with 2.7.3)

I'm using IDLE to write Python programs. My problem is: Calling a recursive
function, which calls itself too many times (1000 times), doesn't give me a
single runtime error, but rather, it keeps sending me error messages until I
close the program.

The error which it should be sending is: "RuntimeError: maximum recursion
depth exceeded." The error which it sends a thousand times isntead is simply a
point out to where in the script the problem is:

    
    
    Traceback (most recent call last):
      File "<pyshell#112>", line 1, in <module>
        factorial(1.5)
      File "/Users/User/Documents/Python/Scripts/program1.py", line 187, in factorial
        recurse = factorial(n-1)
      File "/Users/User/Documents/Python/Scripts/program1.py", line 187, in factorial
        recurse = factorial(n-1)
    

etc.

This goes with all recursive functions calling itself too many times, but the
specific function used here is:

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


Answer: To stop python from showing those hundreds of errors, you can use a `try-
except` block:

    
    
    def factorial(n):
        if n == 0:
            return 1
        else:
            recurse = factorial(n-1)
            result = n * recurse
            return result
    try:
        print (factorial(6000))
    except RuntimeError as e:
        print (e)
    

output:

    
    
    #print factorial(1000)
    93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
    
    #print factorial(6000)
    maximum recursion depth exceeded in comparison
    

In your case this error occurs because python has a limit on the maximum
recursion depth,it is there to stop the C stack from overflow. But you can
change it using `sys.setrecursionlimit`:

    
    
    In [4]: import sys
    
    In [5]: sys.getrecursionlimit()
    Out[5]: 1000
    

