Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Alison

#1
Java / De iteración a recursividad
17 Noviembre 2016, 23:15 PM
Hola, qué tal? Estoy tratando de pasar este ciclo do while a forma recursiva pero aún no me he podido.

Código (java) [Seleccionar]
do {//Loop1
       System.out.println("Filsalida: " + Variable.filsalida + ". Colsalida: " + Variable.colsalida + ". i= " + i + ",j=" + j + ". camino[i][j]=" + camino[i][j] + ". c=" + c);
       if (camino[i][j] == c && j == Variable.filsalida && i == Variable.colsalida) {
               encontrado = true;
       } else if (camino[i][j] == c) {
              System.out.println("Entro!");
              if (i + 1 < Variable.grande + 1) {
                  if (camino[i + 1][j] == -8) {
                        camino[i + 1][j] = c + 1;
                  }
              }
              if (j + 1 < Variable.grande + 1) {
                   if (camino[i][j + 1] == -8) {
                       camino[i][j + 1] = c + 1;
                   }
              }
              if (i - 1 > -1) {
                  if (camino[i - 1][j] == -8) {
                       camino[i - 1][j] = c + 1;
                  }
              }
              if (j - 1 > -1) {
                  if (camino[i][j - 1] == -8) {
                       camino[i][j - 1] = c + 1;
                  }
              }
        }
        //Mostrar(i, j); i = j = 0;
        for (int k = 0; k < Variable.grande + 1; k++) {
             for (int l = 0; l < Variable.grande + 1; l++) {
                  System.out.print(camino[k][l] + " | ");
             }
             System.out.println("");
        }
        //FinMostrar

        j++;
} while (j < Variable.grande + 1 && !encontrado);



Esto es lo que tengo:

Código (java) [Seleccionar]
public void Loop1(int i, int j, int c, boolean encontrado) {
        if (j < Variable.grande + 1 && !encontrado) {
            System.out.println("Filsalida: " + Variable.filsalida + ". Colsalida: " + Variable.colsalida + ". i= " + i + ",j=" + j + ". camino[i][j]=" + camino[i][j] + ". c=" + c);
            if (camino[i][j] == c && j == Variable.filsalida && i == Variable.colsalida) {
                encontrado = true;
            } else if (camino[i][j] == c) {
                System.out.println("Entro!");
                if (i + 1 < Variable.grande + 1) {
                    if (camino[i + 1][j] == -8) {
                        camino[i + 1][j] = c + 1;
                    }
                }
                if (j + 1 < Variable.grande + 1) {
                    if (camino[i][j + 1] == -8) {
                        camino[i][j + 1] = c + 1;
                    }
                }
                if (i - 1 > -1) {
                    if (camino[i - 1][j] == -8) {
                        camino[i - 1][j] = c + 1;
                    }
                }
                if (j - 1 > -1) {
                    if (camino[i][j - 1] == -8) {
                        camino[i][j - 1] = c + 1;
                    }
                }
            }
            int k, l;
            k = l = 0;
            Mostrar(k, l);
            Loop1(i, j + 1, c, encontrado);
        }
    }


Si alguno(a) me podría decir en dónde puede estar mi error, se los agradecería, por favor! Este ciclo va dentro de otros do while pero cuando trato de reemplazar con lo recursivo no me produce el mismo resultado.