아래의 기능이 넘쳐 나는 이유를 모르겠다. x를 0으로, y를 0으로, dim를 2로 설정하면 결과는 6이되어야합니다. 그러나 오버 플로우가 발생할 때 함수의 x 또는 y 중 일부 Long 값이 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)
}
}
아, 이제 내가 바보가 된 기분에 도착. 감사 표시! –
또한이 함수가 꼬리가되도록 최적화 할 수있는 방법이 있습니까? - 재귀? –
@ChrisGrimm : 나는 아마도 당신의 새로운 질문에 답할 수있는 최고의 사람이 아닙니다. –