您已将函数编写为尾递归。在许多命令式和函数式语言中,这将触发尾部递归消除,在这种情况下,编译器用简单的JUMP替换了CALL /
RETURN指令序列,从而使该过程与迭代大致相同,而与常规堆栈帧分配相反递归函数调用的开销。但是,Python不使用尾部递归消除,如以下一些链接所述:
http://neopythonic.blogspot.com/2009/04/tail-recursion-
elimination.html
http://metapython.blogspot.com/2010/11/tail-recursion-elimination-in-
python.html
从链接中可以看到,有一些默认情况下不存在的原因,并且您可以通过多种方式对其进行破解,但是默认情况下,Python会使用生成器函数之类的东西来创建复杂的指令序列,递归。



