Я пишу рекурсивный метод, чтобы найти все возможные пути в двумерном массиве. От верхней левой точки (0,0) до нижней правой точки последней точки. И возвращает суммы путей.Рекурсия с 2-мерным массивом
public static void printPathWeights(int[][] m)
{
printPathWeights(m, 0, 0, 0);
}
public static void printPathWeights(int[][] m, int row, int col, int sum)
{
if(row == 0 && col ==0)
sum = 0;
if (row == m.length - 1 && col == m[row].length - 1)
System.out.println(sum);
else
{
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row - 1, col, sum += m[row][col]); // Up
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row + 1, col, sum += m[row][col]); // Down
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row, col - 1, sum += m[row][col]); // Left
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row, col + 1, sum += m[row][col]); // Right
}
}
В настоящее время моя проблема заключается в том, что эта функция попасть в бесконечный цикл и не печатать мою сумму
Тот, кто дал вам это задание, возможно, участвовал в конкурсе Hackerrank.com CodeSprint 5 на прошлой неделе. Это одна из проблем, которые они предложили :) – Miquel