java - 无限递归帮助 - Java

标签 java recursion infinite

好吧,我有一个小错误 - 似乎我在尝试解决的程序中遇到了无限递归。所以基本上,您读入一个数组,然后获取这些值,将它们随机加载到二维数组中。我已经为该程序完成了所有设置和其他方法,但我的递归方法似乎进入了无限递归。我的编译器不会告诉我它出了什么问题,除了递归语句上的错误之外,我看不到实际的输出。我以前做过类似的问题,这是第一次发生这个错误,有人能指出我正确的方向吗?

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;
    }
}

最佳答案

问题是这样的:假设我们有一个尺寸为 2x1 的简单数组,值为 ["5", "5"]。 建议我们寻找“5”。然后它将进入前五名。从那里开始,它将检查其所有邻居。 因此它将到达第二个五个,从那里它将再次搜索所有邻居。 因此它将命中前五个,从那里它将再次搜索所有邻居。 因此它将到达第二个五个,从那里它将再次搜索所有邻居。 因此它将命中前五个,从那里它将再次搜索所有邻居。 因此它将到达第二个五个,从那里它将再次搜索所有邻居。 因此它将命中前五个,从那里它将再次搜索所有邻居。

...你得到了模式^^

关于java - 无限递归帮助 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989208/

相关文章:

java - 如何在 Spring Boot 中的组件中 Autowiring 存储库接口(interface)

java - Libgdx opengl 绘制线条示例

python - Pygame粒子效果

java - 从列表中删除条目?

algorithm - 帕斯卡三角 Scala : Compute elements of Pascal's triangle using tail recursive approach

python - 如何从 JSON 递归地在 Python 中添加字典?

c - 为什么我的程序在输入不正确时会无限次或错误次数地计算结果?

java - 对于无限运行的查询,哪个是更好的 Java 程序或存储过程

ios - 如何比较 float 变量值是否为无限?

java - 为什么我的正则表达式在 shell 脚本中失败,尽管它在 jregex 中工作?