python堆栈是否会随着递归过程执行的迭代过程而增长?

dav*_*loo 5 python tail-recursion tail-call-optimization

我知道Python不支持尾调用优化.这是否意味着具有迭代过程的递归过程(如下面定义的阶乘)将消耗O(n)内存,或者没有延迟操作的事实意味着空间将是O(1)?

def factorial(n, accum=1):
    if n == 0:
        return accum
    else:
        return factorial(n-1, accum * n)
Run Code Online (Sandbox Code Playgroud)

Mu *_*ind 5

内存将为O(n).如果python优化了这种情况,那么在递归中发生的异常就不会有完整的堆栈跟踪.您只需使基本案例引发异常就可以自己测试它,并且您将看到完整的堆栈跟踪.