Chr*_*imm 1 recursion scala overflow
以下功能溢出,我不明白为什么.当使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
你else在两个地方失踪了.这意味着你的最后一行甚至会在x >= dimx超过时运行dim.试试这个:
if (x == dim && y == dim) {
1
} else if (x >= dim) {
lattice(dim,x,y+1L)
} else if (y >= dim) {
lattice(dim,x+1L,y)
} else {
lattice(dim,x+1L,y) + lattice(dim,x,y+1L)
}
Run Code Online (Sandbox Code Playgroud)