下面的函数溢出了,我不明白为什么。当 x 为 0、y 为 0、dim 为 2 运行时,结果应为 6。但是,我收到一个错误,表明函数中的某个 Long 值(x 或 y)在溢出时为 554。这应该是不可能的,因为 x 和 y 都受暗值的限制,在我的测试中设置为 2。这是代码:
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)
}
}