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.
def trisum(n, csum):
if n == 0:
return csum
else:
return trisum(n - 1, csum + n)
print(trisum(1000, 0))
Should I conclude that Python does not do any type of TCO, or do I just need to define it differently?
return func(...)
(explicitly or implicitly), whether it's recursive or not. TCO is a proper superset of TRE, and more useful (e.g. it makes continuation passing style feasible, which TRE can't), and not much harder to implement. – delnan Nov 27 '12 at 20:11