下面的函數溢出了,我不明白爲什麼。當x以0運行,y爲0並且暗淡爲2時,結果應該是6.但是,我收到一個錯誤,指出函數中的某個Long值(x或y)在溢出時爲554。在兩個地方遞歸函數溢出,爲什麼?
def lattice(dim: Long, x: Long, y: Long): Long = {
if (x == dim && y == dim) {
1
}
if (x >= dim) {
lattice(dim,x,y+1L)
}
if (y >= dim) {
lattice(dim,x+1L,y)
}
else {
lattice(dim,x+1L,y) + lattice(dim,x,y+1L)
}
}
哦,現在我到覺得自己很蠢。謝謝Mark! –
另外,有沒有什麼辦法可以優化這個函數的尾部-Recursive? –
@ChrisGrimm:我可能不是最好的人回答你的新問題。 –