是的,它可以防止堆栈溢出。Python(或更确切地说,CPython实现)无法优化尾部递归,无限制的递归会导致堆栈溢出。您可以使用以下方法检查递归限制
sys.getrecursionlimit:
import sysprint(sys.getrecursionlimit())
并使用以下方式更改递归限制
sys.setrecursionlimit:
sys.setrecursionlimit(1500)
但是这样做很危险-标准限制有些保守,但是Python堆栈框架可能会很大。
Python不是一种功能语言,尾部递归并不是一种特别有效的技术。如果可能的话,迭代地重写算法通常是一个更好的主意。



