任何人都可以告诉我为什么会出现运行时错误

Anyone can tell me why it is giving runtime error

问题 Link:LeetCode,我遇到了运行时错误,但没有找到错误的原因。为什么它给出运行时错误任何人都可以解释我。提前致谢。

class Solution {
public:
    bool dfs(vector<vector<int>>& grid, int row, int col, int color)
    {
        if(row<0 || col<0 || row>=grid.size() || col>=grid[0].size() || abs(grid[row][col])!=color)
            return false;
        grid[row][col]=-color;
        bool first = dfs(grid, row-1, col, color);
        bool second = dfs(grid, row, col+1, color);
        bool third = dfs(grid, row+1, col, color);
        bool fourth = dfs(grid, row, col-1, color);
        if(first && second && third && fourth)
        {
            grid[row][col]=color;
        }
        return true;
    }
    vector<vector<int>> colorBorder(vector<vector<int>>& grid, int row, int col, int color) {
        
        dfs(grid, row, col, grid[row][col]);
        for(int i=0; i<grid.size(); i++)
        {
            for(int j=0; j<grid[0].size(); j++)
            {
                if(grid[i][j]<0)
                    grid[i][j]=color;
            }
        }
        return grid;    
    }
};

我已经为您的代码编写了测试:https://godbolt.org/z/TazozK8xe 并启用了地址清理程序。

无需阅读您的代码,只需阅读消毒剂日志,您就可以看到您有不定式递归(注意堆栈帧的数量超过 178,而问题很简单,最多 4 步即可完成)。基本上你停止递归的条件是错误的或不完整的。

我建议您学习如何使用调试器,以便您更容易理解这个问题。