elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:44  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Recursividad con funciones void, ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recursividad con funciones void, ayuda  (Leído 549 veces)
LiLou

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Recursividad con funciones void, ayuda
« en: 2 Abril 2011, 01:12 »

Buenas.

Tengo un código que me reordena un vector de una determinada manera, en la mitad izquierda, estarán los numeros menores o iguales que x, y por la derecha, los que son mayores que x.
Por ejemplo: v = {1, 10, 23, 15, 13, 8}; x = 8;
Reordenado (una posibilidad) seria v = {3, 1, 8, 10, 23, 15};

Sé hacerlo si digo que la funcion retorne un array, pero no sé hacerlo sin que retorne nada.

Código
    public int[] reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
       if(left==right)
           return reorganize2(v,x,left,right-1);
       else{
           int m = (left+right)/2;
           if(v[m] <= x){
               swap(v,m,left);
               return reorganize2(v,x,left+1,right);
           }else{
               swap(v,m,right-1);
               return 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;
   }

He probado a hacer ésto:
Código
    public void reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
       if(left==right)
           reorganize2(v,x,left,right-1);
       else{
           int m = (left+right)/2;
           if(v[m] <= x){
               swap(v,m,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;
   }
 
Pero no funciona.
No he hecho muchos ejercicios de recursividad con funciones void (he hecho solo uno, pero apenas lo entiendo), asi que agradecería que me alguien me lo explicase  mas o menos :-\



« Última modificación: 2 Abril 2011, 01:21 por LiLou » En línea
LiLou

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Recursividad con funciones void, ayuda
« Respuesta #1 en: 3 Abril 2011, 10:51 »

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: ");


Un saludo.


En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con recursividad
.NET
eagle17 2 1,204 Último mensaje 1 Marzo 2009, 10:29
por bitarray
Crear un TUE bootable...javascript:void(0);javascript:void(0);
Dudas Generales
Legn@ 5 1,478 Último mensaje 5 Febrero 2008, 09:51
por Legn@
ayuda recursividad
.NET
Choclito 2 910 Último mensaje 14 Mayo 2009, 03:38
por Choclito
(void *) en funciones
Programación C/C++
Shon 4 1,583 Último mensaje 25 Enero 2011, 16:06
por Littlehorse
Problemas C de funciones , recursividad
Programación C/C++
Ateius 5 674 Último mensaje 4 Marzo 2012, 13:50
por Xandrete
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines