1
我對Groovy非常陌生。我正在用它的屬性來解決斐波那契數列。我有一個Groovy這樣的代碼:這個未知的源錯誤是什麼意思?
a = new BigInteger[2][2]
a[0][0] = 1
a[0][1] = 1
a[1][0] = 1
a[1][1] = 0
temp = new BigInteger[2][2]
temp = a
def testFun(def a,BigInteger n) {
if(n == 1)
return a
b = new BigInteger[2][2]
def sum = 0
for (c = 0 ; c < 2 ; c++) {
for (d = 0 ; d < 2 ; d++)
{
for (k = 0 ; k < 2 ; k++)
{
sum = sum + temp[c][k] * a[k][d];
}
b[c][d] = sum
sum = 0;
}
}
testFun(b,n-1)
}
c = new BigInteger[2][2]
BigInteger n = 90
if(n % 2 == 0)
{
c = testFun(a,n.divide(2))
temp = c
c = testFun(c,2)
}
println c[0][1]
我得到的答案一樣:
2880067194370816120
但是當我改變N值說5090
,我得到一個很大的錯誤是這樣的:
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
at fibb.testFun(fibb.groovy:24)
at fibb$testFun.callCurrent(Unknown Source)
出了什麼問題?爲什麼我得到這個錯誤?
尾遞歸優化是否會阻止堆棧溢出,或者這不是它所做的? – 2012-07-18 17:50:21
+1它可能是其中有大量的顯示問題蹤跡如你堆棧溢出異常得到Groovy的控制檯運行 – 2012-07-18 17:52:13
[@arxanas](http://stackoverflow.com/questions/11546969/what-does-this-unknown -source-error-mean#comment15270006_11547345)Groovy不會執行尾部調用消除。它確實有[trampolines](http://java.dzone.com/articles/cool-stuff-groovy-18)。 – 2012-07-18 19:01:16