/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Recursividad con funciones tipo void

 
      Índice del Foro elrincondelc.com -> Java
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
LiLou



Registrado: 02 Abr 2011
Mensajes: 3

MensajePublicado: 02/04/2011 7:13 am
Título: Recursividad con funciones tipo void

Holas.
No entiendo muy bien como funciona una funcion recursiva del tipo void. Asi que agradecería que alguien me ayudara a comprenderlo.
Tengo éste código que me reordena de una determinada manera los elementos de un vector. En la parte izquierda han de estar los elementos menores o igual que x, en la derecha, los que son mayores.
Por ejemplo:
v = {1, 10, 23, 15, 13, 8}; x = 8;
Reordenado (una posibilidad) seria v = {1, 8, 13, 10, 23, 15};

Código:

    public void reorganize2(int[] v, int x){
        reorganize2(v, x, 0, v.length); 
    }

    public void reorganize2(int[] v, int x, int left, int right){
        if(left==right)               //caso simple
            reorganize2(v,x,left,right); //no estoy muy seguro si he de poner esto
        else{
            int m = (left+right)/2; //la mitad del vector
            if(v[m] <= x){
                swap(v,m,left);      //cambio el elemento v[m] por el de v[left]
                reorganize2(v,x,left+1,right);
            }else{
                swap(v,m,right-1);
                reorganize2(v,x,left,right-1);
            }
        }
    }

    public void swap(int[] v, int i, int j){
        int tmp = v[i];
        v[i] = v[j];
        v[j] = tmp;
    }

Según mi lógica, el código debería de funcionar, el problema está en que no sé como adaptarlo a una funcion del tipo void Sad
Volver arriba
LiLou



Registrado: 02 Abr 2011
Mensajes: 3

MensajePublicado: 03/04/2011 12:48 am
Título:

Solucionado.

El problema, como ya me temía, era el caso simple.
No debería de volver a llamar a la función, sino finalizar con un print, por ejemplo: println("\nReorganized: ");

Pues no tenían mucho misterio las funciones void xD

Un saludo.
Volver arriba
      Índice del Foro elrincondelc.com -> Java
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com