Leetcode报错 ERROR_stack-overflow on address 0x7fffa50b2ff8
Bug原因:在写leetcode200. 岛屿数量遇到的报错,这是经典的爆栈报错。
class Solution {
public:
int res=0;
void dfs(vector<vector<char>>&grid,int i,int j){
if(i<0 || j<0 || i>=grid.size() || j>=grid[0].size() || grid[i][j]!='1')
return;
// grid[i][j]='0'; 这一句不加上就会爆zhan爆栈
dfs(grid,i+1,j);
dfs(grid,i-1,j);
dfs(grid,i,j+1);
dfs(grid,i,j-1);
}
int numIslands(vector<vector<char>>& grid) {
int n=grid.size(),m=grid[0].size();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]=='1'){
dfs(grid,i,j);
res++;
}
}
}
return res;
}
};
如果没添加注释那一行的句子,就会无限递归调用dfs函数,导致爆栈。取消注释即可。