Why is the maximum recursion of sys.getrecursionlimit() [which is 1000 in my case running Ubuntu 18.04] not reached when I run the following program.
import sys
global count
print(f'sys recursion limit is: {sys.getrecursionlimit()}')
count = 0
def foo(x):
global count
if x == 1:
return 1
else:
count += 1
return x + foo(x - 1)
x = 982
print(f'answer of foo({x}) = {foo(x)}, count = {count}')
result with x = 982
sys recursion limit is: 1000
answer of foo(982) = 482653, count = 981
but with x = 983 I get a RecursionError
sys recursion limit is: 1000
Traceback (most recent call last):
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py", line 562, in trace_dispatch
cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1')
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py", line 253, in make_io_message
return NetCommand(CMD_WRITE_TO_CONSOLE, 0, event, is_json=True)
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py", line 57, in __init__
text = json.dumps(as_dict)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
RecursionError: maximum recursion depth exceeded while encoding a JSON object
Traceback (most recent call last):
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/ptvsd_launcher.py", line 43, in <module>
main(ptvsdArgs)
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/__main__.py", line 432, in main
run()
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/__main__.py", line 316, in run_file
runpy.run_path(target, run_name='__main__')
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 18, in <module>
print(f'answer of foo({x}) = {foo(x)}, count = {count}')
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 15, in foo
return x + foo(x - 1)
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 15, in foo
return x + foo(x - 1)
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 15, in foo
return x + foo(x - 1)
[Previous line repeated 977 more times]
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 14, in foo
count += 1
File "/home/bvermeulen/Python/stackoverflow/recursion.py", line 14, in foo
count += 1
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py", line 562, in trace_dispatch
cmd = main_debugger.cmd_factory.make_io_message(info.pydev_message + os.linesep, '1')
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py", line 253, in make_io_message
return NetCommand(CMD_WRITE_TO_CONSOLE, 0, event, is_json=True)
File "/home/bvermeulen/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py", line 57, in __init__
text = json.dumps(as_dict)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/home/bvermeulen/.pyenv/versions/3.7.4/lib/python3.7/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
RecursionError: maximum recursion depth exceeded while encoding a JSON object