2011-05-09 16 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)。