2011-05-09 42 views

回答

5

内存将为O(n)。如果python优化了这种情况,那么发生在递归深处的异常将不会有完整的堆栈跟踪。你可以自己测试它的作用,只是让基本情况引发一个异常,你会看到完整的堆栈跟踪。

+0

即'raise异常(“Result”,accum)' – laher 2011-05-09 03:47:44

+0

+1对于基本情况异常技巧 – 2011-10-05 21:15:59

2

无尾调用优化意味着你需要保持堆栈存储器中的递归调用返回前,所以在我看来,内存使用量将是为O(n),在这种情况下。

如果你想自己检查出来,只是运行您的示例代码的n大值(使用的sys.setrecursionlimit),并检查内存使用量top应该说服你,这不是O(1)。