Skip to content
Advertisement

Does Python optimize tail recursion?

I have the following piece of code which fails with the following error:

RuntimeError: maximum recursion depth exceeded

I attempted to rewrite this to allow for tail recursion optimization (TCO). I believe that this code should have been successful if a TCO had taken place.

JavaScript

Should I conclude that Python does not do any type of TCO, or do I just need to define it differently?

Advertisement

Answer

No, and it never will since Guido van Rossum prefers to be able to have proper tracebacks:

Tail Recursion Elimination (2009-04-22)

Final Words on Tail Calls (2009-04-27)

You can manually eliminate the recursion with a transformation like this:

JavaScript
Advertisement