鑑於生成Fibonacci數的函數:斐波那契序列:遞歸深度過剩
def fibonacci(x, memory = {0:0, 1:1}):
if x not in memory:
memory[x] = fibonacci(x-1, memory)+fibonacci(x-2, memory)
return memory[x]
當我嘗試一些任意大的數,如第4000斐波那契數,我得到一個錯誤:
RuntimeError: maximum recursion depth exceeded
什麼是造成的錯誤?在不犧牲效率的前提下,可以做些什麼?我更喜歡迭代,因爲通過迭代計算即使第50個位置對於計算機來說也需要天文學上的漫長時間(閱讀:半分鐘)。
迭代應該顯著強於大盤遞歸 - 它不健全的權利,這將需要超過一秒鐘的一個很小的部分來計算F1通過F50。無論如何,如果這是Python,那麼你可能想看看sys.getrecursionlimit()和sys.setrecursionlimit() – 2014-12-04 06:25:50