[Python-Dev] Proper tail recursion

"Martin v. Löwis" martin at v.loewis.de
Thu Jul 15 21:08:24 CEST 2004


Michael Chermside wrote:
> No... that answer applies to *language features*, but not *implementation
> details*. The recursion limit (the value of it anyhow) is an
> implementation detail.

No, it is not. In standard Python, the program

def rec(n):
   rec(n-1)

n=1
while 1:
   try:
     rec(n)
   except RuntimeError:
     break
print "The recursion limit is", n

will terminate. In the modified Python, it will not terminate.
It is a change in behaviour, and thus a language feature.

> This doesn't bother me as much as it apparently bothers you. But for
> that matter, we hardly care about performance if we're going to be
> generating a stack trace, so we could probably construct the stack
> trace after-the-fact if needed.

No, you can't: You forgot already what all the local variables where.

Regards,
Martin



More information about the Python-Dev mailing list