It is a guard against a stack overflow, yes. Python (or rather, the CPython implementation) doesn’t optimize tail recursion, and unbridled recursion causes stack overflows. You can check the recursion limit with sys.getrecursionlimit
:
import sys print(sys.getrecursionlimit())
and change the recursion limit with sys.setrecursionlimit
:
sys.setrecursionlimit(1500)
but doing so is dangerous — the standard limit is a little conservative, but Python stackframes 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.
Related Posts:
- What is the maximum recursion depth in Python, and how to increase it?
- Python: maximum recursion depth exceeded while calling a Python object
- What is the maximum recursion depth in Python, and how to increase it?
- Python: maximum recursion depth exceeded while calling a Python object
- Python Array Rotation
- Recursion in Python? RuntimeError: maximum recursion depth exceeded while calling a Python object
- Python Quicksort Runtime Error: Maximum Recursion Depth Exceeded in cmp
- Multiplication function with recursion in Python
- How to add to the PYTHONPATH in Windows, so it finds my modules/packages?
- FileNotFoundError: [WinError 2] The system cannot find the file specified:
- Remove all whitespace in a string
- What to do with “Unexpected indent” in python?
- _tkinter.TclError: no display name and no $DISPLAY environment variable
- How do I merge two dictionaries in a single expression (taking union of dictionaries)?
- How do I create an empty array/matrix in NumPy?
- error: command ‘gcc’ failed with exit status 1 while installing eventlet
- Python foreach equivalent
- sklearn error ValueError: Input contains NaN, infinity or a value too large for dtype(‘float64’)
- Limiting floats to two decimal points
- what does the __file__ variable mean/do?
- Difference between os.getenv and os.environ.get
- syntaxError: ‘continue’ not properly in loop
- How to check if the string is empty?
- Get the data received in a Flask request
- How do I install Python OpenCV through Conda?
- How to do superscripts and subscripts in Jupyter Notebook?
- How to get a random number between a float range?
- Cannot install Beautiful Soup in Anaconda Python 3.6.4 Windows 10
- ImportError: cannot import name
- How can you profile a Python script?
- How to set the current working directory?
- heroku: no default language could be detected for this app
- ‘DataFrame’ object has no attribute ‘sort’
- “VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path”
- What is __pycache__?
- What does “\r” do in the following script?
- TypeError: ‘NoneType’ object is not iterable in Python
- Understanding slice notation
- Add list to set?
- Infinite integer in Python
- Determine Whether Integer Is Between Two Other Integers?
- If vs. else if vs. else statements?
- Quoting backslashes in Python string literals
- AttributeError: Can only use .dt accessor with datetimelike values
- Python string class like StringBuilder in C#?
- How do I clear all variables in the middle of a Python script?
- How to tell if tensorflow is using gpu acceleration from inside python shell?
- What is the easiest way to get current GMT time in Unix timestamp format?
- xlrd.biffh.XLRDError: Excel xlsx file; not supported
- Python/Json:Expecting property name enclosed in double quotes
- Python try-else
- How to compare two dates?
- Normalize columns of pandas data frame
- Normalize columns of pandas data frame
- Python Error: “ValueError: need more than 1 value to unpack”
- Python: can’t assign to literal
- “Initializing” variables in python?
- Difference between except: and except Exception as e:
- Flask raises TemplateNotFound error even though template file exists
- Python: Declare as integer and character
- How to install pytorch in windows?
- Python TypeError must be str not int
- What does |= (ior) do in Python?
- How can I find the first occurrence of a sub-string in a python string?
- NumPy List Comprehension Syntax
- Python socket.error: [Errno 111] Connection refused
- Windows- Pyinstaller Error “failed to execute script ” When App Clicked
- Python: What is the correct MIME type for attaching html file to email
- Linear regression with matplotlib / numpy
- Solving “500: Internal Server Error, nbconvert failed: xelatex not found in PATH”
- Using Look Up Tables in Python
- Parallel Python: What is a callback?
- How to uninstall jupyter
- Python CSV error: line contains NULL byte
- python NameError: name ‘file’ is not defined
- python BeautifulSoup parsing table
- Python Add to dictionary loop
- how to exit a python script in an if statement
- How to add column to numpy array
- OpenCV NoneType object has no attribute shape
- AttributeError: ‘str’ object has no attribute ‘items’
- ImportError: No module named Crypto.Cipher
- How to clear Tkinter Canvas?
- Python official installer missing python27.dll
- TypeError: ‘range’ object does not support item assignment
- Convert string to variable name in python
- Can not click on a Element: ElementClickInterceptedException in Splinter / Selenium
- How to split elements of a list?
- How can I find script’s directory?
- Porting Perl to Python
- Find object in list that has attribute equal to some value (that meets any condition)
- What is the purpose of the single underscore “_” variable in Python?
- Syntax highlighting in vim for python
- Python IOError: File not open for reading
- Strange Exception in Tkinter callback
- How to resolve “ImportError: DLL load failed:” on Python?
- ‘module’ has no attribute ‘urlencode’
- Cannot concatenate ‘str’ and ‘float’ objects?
- Python Text Menu Infinite Loop
- Install pip for python 3.5