Blog |

How to Fix RecursionError in Python

How to Fix RecursionError in Python
Table of Contents

The Python RecursionError is an exception that occurs when the maximum recursion depth is exceeded. This typically occurs when a function calls itself recursively, and the recursion doesn't have a proper stopping condition (base case).

What Causes RecursionError

A RecursionError in Python is caused by a function calling itself recursively without a proper base case. Python has a limit on the number of times a function can call itself recursively. This is to ensure that the function does not execute indefinitely. If this limit is exceeded by a recursive function, a RecursionError is raised.

Python RecursionError Example

Here’s an example of a Python RecursionError thrown when calling a recursive function that does not have a base case:

def func():
    func()

func()

Since the recursive function func() does not have a terminating condition, calling it creates an infinite loop as the function keeps calling itself over and over again until the RecursionError: maximum recursion depth exceeded error occurs:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    func()
  File "test.py", line 2, in func
    func()
  File "test.py", line 2, in func
    func()
  File "test.py", line 2, in func
    func()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

How to Fix RecursionError in Python

Here are some approaches to fix a recursion error in Python:

  • Adding a base case: The most common cause of a recursion error is that the function does not have a base case to stop the recursion. In such cases, a base case can be added to the function that stops recursion when a condition is met.
  • Increasing the recursion limit: Python has a default maximum recursion depth of 1000. If a function exceeds this limit, it can be increased using the sys.setrecursionlimit(n) function. Developers should be careful when increasing the limit as this can cause a crash if the recursion is not properly controlled.
  • Using an iterative approach: If a recursive approach is causing a recursion error, it may be possible to use an iterative approach instead e.g. a for or while loop. This can reduce the risk of hitting the maximum recursion depth, and in some cases can also lead to more efficient and easier to understand code.

Track, Analyze and Manage Errors With Rollbar

Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Python errors easier than ever. Try it today!

Related Resources

"Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. Without it we would be flying blind."

Error Monitoring

Start continuously improving your code today.

Get Started Shape