2011-09-29 71 views
1

我有下面的代碼,試圖找到Fibonacci序列的第一個數字超過1000位:在groovy中執行遞歸函數300+次時解決堆棧溢出錯誤?

z = 0g 
def fib 
fib = {a,b-> 
    if(a <= 10g**1000){ 
     z++ 
     fib(b.toBigInteger(), (a+b).toBigInteger()) 
    }else{ 
     return z 
    } 
} 

fib(1,2) 

當我改變「1000」到〜300或更低此功能,並計算井在半秒鐘之內。

但是,當我將這個變量提升到上面時,我得到一個堆棧溢出。我看到了另一個關於這個的問題,答案是使用一個名爲「doall」的函數,但在Groovy中我沒有看到。

我的數字解決方案是非常簡單的,在這一點上,但我不知道到哪裏尋找它...

任何人都可以幫我嗎?

非常感謝!

回答