Java - Transformar metodo Iterativo a Recursivo

 
Vista:

Transformar metodo Iterativo a Recursivo

Publicado por Azazel (2 intervenciones) el 01/11/2016 02:49:27
Saludos!
Tengo un método que guarda los nodos de una Lista Circular Doble un archivo de texto pero no puedo transformarlo a recursivo. Agradecería cualquier tipo de ayuda u opinon.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public static String Guardar(NodoG raiz)
    {
        String c = "";
        String a = "";
        String v = "";
        try
        {
            NodoG nodoCiudad = raiz;
            do
            {
                Ciudad cdad = (Ciudad) nodoCiudad.getObj();
                try
                {
                    NodoG nodoAero = nodoCiudad.getrAbajo().getSiguiente();
                    do
                    {
                        Aeropuerto ar = (Aeropuerto) nodoAero.getObj();
                        try
                        {
                            NodoG nodoVuelo = nodoAero.getrAbajo().getSiguiente();
                            do
                            {
                                Vuelos vuelo = (Vuelos) nodoVuelo.getObj();
                                v += vuelo.getNv() + "," + vuelo.getCiudad() + "," + vuelo.getAerolinea() + ","
                                        + vuelo.getHora() + "," + vuelo.getTipo() + System.getProperty("line.separator");
                                nodoVuelo = nodoVuelo.getSiguiente();
                            } while (nodoVuelo != nodoAero.getrAbajo().getSiguiente());
                        } catch (NullPointerException e)
                        {
                        }
                        a += ar.getNom() + "," + ar.getCiudad() + "," + ar.getDir() + "," + ar.getTel() + "," + ar.getEmail()
                                + "," + ar.getGrupo() + "," + ar.getTipo() + System.getProperty("line.separator");
                        nodoAero = nodoAero.getSiguiente();
                    } while (nodoAero != nodoCiudad.getrAbajo().getSiguiente());
                } catch (NullPointerException e)
                {
                }
                c += cdad.getNom() + "," + cdad.getEdo() + "," + cdad.getPais() + "," + cdad.getNumhbnts()
                        + System.getProperty("line.separator");
                nodoCiudad = nodoCiudad.getSiguiente();
            } while (nodoCiudad != raiz);
        } catch (NullPointerException e)
        {
        }
        return (c + "\n" + a + "\n" + v); // Este string lo pongo en otro metodo que tengo para guardar archivos Ejemplo: archivo.Actualizar(Archivo.Guardar(lista.getR().getSiguiente()));
    }


Esta era una idea pero no me queda:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static void GuardarArchivo(NodoG raiz, Arch archivo,String a)
    {
 
        while (raiz != null)
        {
            ListaG l = new ListaG();
            l.setR(raiz);
            NodoG ne = l.elimina(raiz.getDato());
            NodoG tmp = ne.getrAbajo();
            ne.setrAbajo(null);
            switch (ne.getObj().getClass().getSimpleName())
            {
                case ("Ciudad"):
                {
                    Ciudad cdad = (Ciudad) ne.getObj();
                    a += cdad.getNom() + "," + cdad.getEdo() + "," + cdad.getPais() + "," + cdad.getNumhbnts()
                        + System.getProperty("line.separator");
                    break;
                }
                case ("Aeropuerto"):
                {
                    Aeropuerto ar = (Aeropuerto) ne.getObj();
                    a += ar.getNom() + "," + ar.getCiudad() + "," + ar.getDir() + "," + ar.getTel() + "," + ar.getEmail() + "," + ar.getGrupo() + "," + ar.getTipo() + System.getProperty("line.separator");
                    break;
                }
                case ("Vuelos"):
                {
                    Vuelos vuelo = (Vuelos) ne.getObj();
                    a += vuelo.getNv() + "," + vuelo.getCiudad() + "," + vuelo.getAerolinea() + "," + vuelo.getHora() + "," + vuelo.getTipo() + System.getProperty("line.separator");
                    break;
                }
                default:
                {
                    break;
                }
            }
            GuardarArchivo(tmp, archivo,a);
        }
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder