堆栈溢出,该如何解决?

Net_Asum 2011-04-06 06:07:51
public static void Relevance(String[][] MineSweepingList,
String[][] MineSweepingList2, int row, int list, long size,
String[] recurrenceOfCondition, int numberOfROC) {
MineSweepingList2[row][list] = "口";
if (list + 1 < size % 100) {
if (MineSweepingList[row][list + 1] == " 0 "
&& MineSweepingList2[row][list + 1] != "口") {
MineSweepingList2[row][list + 1] = "口";
Relevance2(MineSweepingList, MineSweepingList2, row, list + 1,
size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row][list + 1] = MineSweepingList[row][list + 1];
}
if (row + 1 < size / 100) {
if (MineSweepingList[row + 1][list] == " 0 "
&& MineSweepingList2[row + 1][list] != "口") {
MineSweepingList2[row + 1][list] = "口";
Relevance2(MineSweepingList, MineSweepingList2, row + 1, list,
size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row + 1][list] = MineSweepingList[row + 1][list];
}
if (list - 1 >= 0) {
if (MineSweepingList[row][list - 1] == " 0 "
&& MineSweepingList2[row][list - 1] != "口") {
MineSweepingList2[row][list - 1] = "口";
Relevance2(MineSweepingList, MineSweepingList2, row, list - 1,
size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row][list - 1] = MineSweepingList[row][list - 1];
}
if (row - 1 >= 0) {
if (MineSweepingList[row - 1][list] == " 0 "&&MineSweepingList2[row - 1][list] != "口"){
MineSweepingList2[row - 1][list] = "口";
Relevance2(MineSweepingList, MineSweepingList2, row-1, list - 1,
size, recurrenceOfCondition, numberOfROC);
}
else
MineSweepingList2[row - 1][list] = MineSweepingList[row - 1][list];
}
}

public static void Relevance2(String[][] MineSweepingList,
String[][] MineSweepingList2, int row, int list, long size,
String[] recurrenceOfCondition, int numberOfROC) {
MineSweepingList2[row][list] = "口";
if (row + 1 < size / 100 && list + 1 < size % 100) {
if (MineSweepingList[row + 1][list + 1] == " 0 "
&& MineSweepingList2[row + 1][list + 1] != "口") {
MineSweepingList2[row + 1][list + 1] = "口";
Relevance(MineSweepingList, MineSweepingList2, row + 1,
list + 1, size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row + 1][list + 1] = MineSweepingList[row + 1][list + 1];
}
if (row + 1 < size / 100 && list - 1 >= 0) {
if (MineSweepingList[row + 1][list - 1] == " 0 "
&& MineSweepingList2[row + 1][list - 1] != "口") {
MineSweepingList2[row + 1][list - 1] = "口";
Relevance(MineSweepingList, MineSweepingList2, row + 1,
list - 1, size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row + 1][list - 1] = MineSweepingList[row + 1][list - 1];
}
if (row - 1 >= 0 && list - 1 >= 0) {
if (MineSweepingList[row - 1][list - 1] == " 0 "
&& MineSweepingList2[row - 1][row - 1] != "口") {
MineSweepingList2[row - 1][row - 1] = "口";
Relevance(MineSweepingList, MineSweepingList2, row - 1,
list - 1, size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row - 1][row - 1] = MineSweepingList[row - 1][list - 1];
}
if (row - 1 >= 0 && list + 1 < size % 100) {
if (MineSweepingList[row - 1][list + 1] == " 0 "
&& MineSweepingList2[row - 1][list + 1] != "口") {
MineSweepingList2[row - 1][list + 1] = "口";
Relevance(MineSweepingList, MineSweepingList2, row - 1,
list + 1, size, recurrenceOfCondition, numberOfROC);
} else
MineSweepingList2[row - 1][list + 1] = MineSweepingList[row - 1][list + 1];
}
}
显示这样的溢出错误:java.lang.ArrayIndexOutOfBoundsException和这样的错误:java.lang.StackOverflowError 不是同时出现,多次运行后只有这两个错误。 这是一段代码的两个方法,该如何解决。
...全文
307 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tfling2012 2012-04-18
  • 打赏
  • 举报
回复
碰到同楼主的问题,网上说是递归太深了,我也纠结怎么解决
Net_Asum 2011-04-06
  • 打赏
  • 举报
回复
网上百度了一下 说是堆栈太深了 超过了栈空间的极限 如何解决?
  • 打赏
  • 举报
回复
数据越界了,好好检查代码吧。加个断电跟踪下。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧