【发布时间】:2011-02-07 11:21:23
【问题描述】:
在 Python 中有一个最大递归深度。似乎是因为 Python 是解释而不是编译的。 C++ 有相同的概念吗?还是只连接内存限制?
【问题讨论】:
-
我假设您的意思是 最大 递归深度。 (在遇到错误之前允许递归的深度)
-
我不明白为什么作为解释器/编译器与此有关。例如,Stackless Python 仍然是一个解释器,但它的堆栈帧不使用 C 堆栈,因此不存在同样的问题,不是吗?
-
请注意,有 C++ 和 Python 实现可以消除尾调用以避免在这些情况下达到堆栈限制。
-
@Ken stackless 如果无法消除递归调用,最终仍会耗尽资源,例如尾调用优化