Вам придется постоянно опробовать страницу, которая имеет значение из базы данных.
Нет, и это никогда не будет, так как Гвидо предпочитает иметь надлежащие трассировки
http://neopythonic.blogspot.com.au/2009/04/tail-recursion-elimination .html
http://neopythonic.blogspot.com.au/2009/04/final-words-on-tail-calls.html
Вы можете вручную исключить рекурсию с таким преобразованием
>>> def trisum(n, csum):
... while True: # change recursion to a while loop
... if n == 0:
... return csum
... n, csum = n - 1, csum + n # update parameters instead of tail recursion
>>> trisum(1000,0)
500500
Слово Гвидо находится в http://neopythonic.blogspot.co.uk/2009/04/tail-recursion-elimination.html
I недавно опубликовал запись в моем блоге истории Python о происхождении функциональных возможностей Python. Боковое замечание об отсутствии поддержки устранения хвостовой рекурсии (TRE) сразу вызвало несколько комментариев о том, что жаль, что Python этого не делает, включая ссылки на недавние записи в блоге другими, пытающимися «доказать», что TRE можно добавить в Python без труда. Поэтому позвольте мне защищать свою позицию (а это то, что я не хочу TRE на языке). Если вы хотите получить короткий ответ, это просто непитоносно. Вот длинный ответ:
Попробуйте экспериментальную реализацию macropy TCO для размера.
CPython не поддерживает и, вероятно, никогда не будет поддерживать оптимизацию хвостового вызова, основанную на заявлениях Guido по этому вопросу. Я слышал аргументы, что это затрудняет отладку из-за того, как он изменяет трассировку стека.
Помимо оптимизации хвостовой рекурсии, вы можете установить глубину рекурсии вручную:
import sys
sys.setrecursionlimit(5500000)
print("recursion limit:%d " % (sys.getrecursionlimit()))
from operator import add; reduce(add, xrange(n + 1), csum)
? – Jon Clements♦ 27 November 2012 в 22:10