2012/11/27 Lucas Sampaio <
m...@lsmagalhaes.com>:
> Também é possível cortar o recursion limit do Python usando tail recursion,
> que não empilha chamadas recursivas. Isso permite, teoricamente, recursões
> infinitas sem stack overflow.
>
> O Python não tem suporte nativo a tail recursion, mas é possível implementar
> com o uso de um decorator[1]. Um tempo atrás, mais ou menos um ano, soube de
> um pacote que implementava isso, TailSpin[2], mas na época a documentação
> era uma droga, então deixei baixo.
>
> [1]:
http://lambda-the-ultimate.org/node/1331
> [2]:
http://pypi.python.org/pypi/TailSpin
Tenho uma receita também - é legal como brinquedo:
http://metapython.blogspot.com.br/2010/11/tail-recursion-elimination-in-python.html
Mas para calculo intensivo, e não brincadeiras experiemtnais, a melhor coisa é
convertter o algoritmo de recursivo para interativo.
(Para algo rápido e simples, também é possivel alterar o limtite de
recursao do Python,
é só chamar sys.setrecursionlimit - mas na minha experiencia o
interpretador começa a travar com números
perto de 10000 recursões (cPython 2.6 64bit, 4GB, posix) )
js
-><-