下面的函数溢出了,我不明白为什么。当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:我可能不是最好的人回答你的新问题。 –