好的,我有一个小错误 - 似乎我正在对我的程序进行无限递归,我试图解决这个问题。所以基本上,有一个你读入的数组,然后将这些值随机加载到一个二维数组中。我已经为程序完成了所有设置和其他方法,但我的递归方法似乎正在进入无限递归。我的编译器不会告诉我它有什么问题,除了递归语句中的错误外,我看不到实际的输出。我之前做过类似的问题,这是第一次发生这种错误,有人能指出我的方向吗?无限递归帮助 - Java
public class Grid
{
private String[][] grid;
private int tempCount = 0;
public Grid()
{
grid = new String[10][10];
}
public Grid(int rows, int cols, String[] vals)
{
setGrid(rows, cols, vals);
}
public void setGrid(int rows, int cols, String[] vals)
{
grid = new String[rows][cols];
for(int r = 0; r < grid.length; r++)
for(int c = 0; c < grid[r].length; c++)
grid[r][c] = vals[(int)(Math.random() * vals.length)];
}
public int findMax(String val)
{
int max = 0;
for(int r = 0; r < grid.length; r++)
{
for(int c = 0; c < grid[r].length; c++)
{
if(grid[r][c].equals(val))
{
tempCount = 0;
int temp = findMaxHelper(r, c, val);
if(max < temp)
max = temp;
}
}
}
return max;
}
private int findMaxHelper(int r, int c, String search)
{
if(r < grid.length && r >= 0 && c < grid[r].length && c >= 0 && grid[r][c].equals(search))
{
tempCount++;
findMaxHelper(r - 1, c, search);
findMaxHelper(r + 1, c, search);
findMaxHelper(r, c - 1, search);
findMaxHelper(r, c + 1, search);
}
return tempCount;
}
public String toString()
{
String output = "";
for(int r = 0; r < grid.length; r++)
{
for(int c = 0; c < grid[r].length; c++)
output += grid[r][c] + " ";
output += "\n";
}
return output;
}
}
该代码基本上试图找出类似字母的最大连接区域(上,下,左,右)。所以这就是为什么我有一个最大和最小变量。 –
并将温度变量更改为tempCount –