La recursión es algo relativamente complejo de entender, sobre todo para personas que no están habituadas a trabajar con ella. Aquí tienes un código de ejemplo sobre cómo recorrer recursivamente un array de una dimensión (un arreglo o matriz de una dimensión). Faltaría completar el recorrido de una matriz de dos dimensiones, la idea sería seguir el mismo patrón pero aplicarlo a dos dimensiones. Saludos.
import java.util.Arrays;
/*Ejemplo aprenderaprogramar.com*/
public class ejemplo {
public static void main (String[] Args) {
int[][] matriz= new int[3][3];
matriz[0][0] = 1; matriz[0][1] = 2; matriz[0][2] = 3;
matriz[1][0] = 2; matriz[1][1] = 1; matriz[1][2] = 4;
matriz[2][0] = 2; matriz[2][1] = 1; matriz[2][2] = 4;
System.out.println ("Recorrido iterativo\n");
for (int i=0; i<matriz.length; i++) {
for (int j=0; j<matriz[0].length; j++){
System.out.print (" " + matriz[i][j]);
}
System.out.println ("");
}
System.out.println ("\n\n");
System.out.println ("Recorrido recursivo de un array simple");
int[] dataarray = new int [7];
dataarray[0] = 1; dataarray[1] = 5; dataarray[2] = 7; dataarray[3] = 5; dataarray[4] = 9; dataarray[5] = 5; dataarray[6] = 1;
recorridoRecursivo(dataarray, 0, 5);
System.out.println ("");
recorridoRecursivo(dataarray, 0, 1);
System.out.println ("");
recorridoRecursivo(dataarray, 0, 7);
}
public static void recorridoRecursivo (int[][] matrix) {
// FALTA EL CÓDIGO
}
public static void recorridoRecursivo (int[] matrix, int contador, int buscado) {
if (matrix[matrix.length-1] == buscado) { contador = contador + 1; }
if (matrix.length == 1) {
System.out.println ("El numero de apariciones de " + buscado + " es: " + contador);
System.out.print ("" + matrix[0]);
}
else {int[] tmp = Arrays.copyOf (matrix, (matrix.length-1));
recorridoRecursivo(tmp, contador, buscado);
System.out.print ("-->" + matrix[matrix.length-1]);
}
}
}