Я знаю, что стандартный 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, я просто спрашиваю здесь, потому что я услышал одну из замечательных особенностей StacklessPython - это то, что он допускает бесконечные рекурсии, и я не знаю, как я могу включить его для примера кода.
EDIT2: я не уверен, что у меня появилась идея: «Stackless Python поддерживает бесконечные рекурсии»неправильно, но вот некоторые источники, которые говорят (или ссылаются на), что Stackless Python поддерживает бесконечные рекурсии:
Каковы недостатки стекаменьше Python?
https://bitbucket.org/stackless-dev/stackless/issues/96
https://stackless.readthedocs.io/en/3.6-slp/whatsnew/stackless.html