以下の関数が溢れているのですが、その理由がわかりません。xを0、yを0、dimを2で実行すると、結果は6になります。ただし、オーバーフロー時に関数のLong値(xまたはy)が554であることを示すエラーが発生します。xとyは両方ともdim値によって制限されているため、これは不可能です。私のテストでは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)
}
}