我知道标准 CPython 对递归深度有限制,我认为小于 1000,因此下面的示例代码将失败,并出现“超出最大递归深度”错误。
def rec_add(x):
if x == 0:
return x
else:
return x + add(x - 1)
print(rec_add(1000))
听说 Stackless Python 支持无限递归深度,但是如果我用 Stackless Python 运行上面的代码,它仍然会报“超出最大递归深度”的错误。我想也许我需要以某种方式修改代码以使其能够使用 Stackless Python 的无限递归深度功能?
知道如何在 Stackless Python 中进行无限递归吗?谢谢。
注意:我知道如何将标准 CPython 的递归深度限制增加到 1000 以上,并且我知道如何将上述代码转换为简单的迭代,或者简单地使用高斯公式计算总和,这些都不是我要找的,以上代码仅作为示例。
编辑:就像我在上面的“注释”部分已经说过的(我猜没有人真正读过),我知道如何增加 CPython 的递归限制,并且我知道如何将示例代码转换为迭代或只是高斯和公式n * (n + 1) / 2,我只是在这里问,因为我听说 Stackless Python 的一大特点是它可以实现无限递归,我不知道如何为示例代码启用它。
EDIT2:我不确定我是否错误地理解了“Stackless Python 支持无限递归”的想法,但这里有一些资料表明(或暗示)Stackless Python 支持无限递归:
https://bitbucket.org/stackless-dev/stackless/issues/96
https://stackless.readthedocs.io/en/3.6-slp/whatsnew/stackless.html