Estoy tratando de encontrar el área máxima de una isla dentro de una matriz llena de ceros o unos. Dentro de este ejemplo:
Mi matriz devolvería 4 ya que la isla más grande se compone de 4 unos.
[1,1,1], [1,0,0], [0,1,1]Cuando llamo a mi función dfs, necesito devolver el área de esa isla. Al mismo tiempo, estamos convirtiendo a ceros todos los que componían esa isla.
Por alguna razón, mi variable "areaOfIsland" sigue recibiendo indefinidos de la función y no puedo entender por qué. Estoy aprendiendo recursividad, BFS y DFS con la esperanza de que alguien pueda identificar lo que me estoy perdiendo aquí.
var maxAreaOfIsland = function (grid) { let maxArea = 0; for (let i = 0; i < grid.length; i++) { for (let j = 0; j < grid[0].length; j++) { if (grid[i][j] === 1) { let areaOfIsland = dfs(grid, i, j); console.log(areaOfIsland); //this keeps logging undefined. if (areaOfIsland > maxArea) { maxArea = areaOfIsland; } } } } return maxArea; }; const dfs = (matrix, i, j, area) => { if ( i < 0 || j < 0 || i >= matrix.length || j >= matrix[0].length || matrix[i][j] === 0 ) { return area; } if (!area) area = 1; area += 1; matrix[i][j] = 0; dfs(matrix, i + 1, j, area); dfs(matrix, i - 1, j, area); dfs(matrix, i, j + 1, area); dfs(matrix, i, j - 1, area); };