Почему я получаю ошибку StackOverFlow при первом рекурсивном вызове? - PullRequest
0 голосов
/ 02 августа 2020

Ниже приведен код, о котором я говорю, и первый рекурсивный вызов @ checkDirections (grid, i - 1, j) выдает мне ошибку StackOverFlow. Я понимаю, что это означает, что код не соответствует базовому случаю, но я не понимаю почему.

class Solution {
    public int orangesRotting(int[][] grid) {
        
        int rowLength = grid.length;
        int colLength = grid[0].length;
        int minMinutes = 0;
        
        for (int i = 0; i < rowLength; i++) {
            for (int j = 0; j < colLength; j++) {
                if (grid[i][j] == 2) {
                    checkDirections(grid, i, j);
                }
            }
        }
        return minMinutes;
    }
    
    public void checkDirections(int[][] grid, int i, int j) {
        if ((i < 0 || i > grid.length || j < 0 || j > grid[0].length) || grid[i][j] == 0) {
            return;
        } else if (grid[i][j] == 1) {
            grid[i][j] = 2;
            return;
        }
        
        //check left
        checkDirections(grid, i - 1, j);
        //check right
        checkDirections(grid, i + 1, j);
        //check up 
        checkDirections(grid, i, j - 1);
        //check down
        checkDirections(grid, i, j + 1);
        
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...