private void findRute(int x1, int y1, int x2, int y2, int counter)
{
try
{
if((x1 == x2) && (y1 == y2))
{
if(this.min > counter)
{
this.min = counter;
}
}
else
{
if(map[x1-1][y1] == 0)
{
this.findRute(x1 - 1, y1, x2, y2, counter + 1);
}
if(map[x1+1][y1] == 0)
{
this.findRute(x1 + 1, y1, x2, y2, counter + 1);
}
if(map[x1][y1 + 1] == 0)
{
this.findRute(x1, y1 + 1, x2, y2, counter + 1);
}
if(map[x1][y1 - 1] == 0)
{
this.findRute(x1, y1 - 1, x2, y2, counter + 1);
}
}
}
catch(IndexOutOfBoundsException z)
{
}
}
答案 0 :(得分:4)
假设地图完全由零组成,您就在左上角。你将向右移动一步,然后向左移动一步,再向右移动一步,依此类推。
您需要以某种方式标记您已访问过的单元格,以防止无限递归。
此外,抓住IndexOutOfBoundsException
并不是一个好主意:
try
块中添加一些也可以抛出IndexOutOfBoundsException
的代码,你的代码就会开始失败; map[x1-1][y1]
)超出范围,您将跳过剩余的检查; 答案 1 :(得分:-1)
可能您尝试访问-1索引或长度+ 1
想想边缘发生的事情