elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  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 3,978 veces)
LiLou

Desconectado Desconectado

Mensajes: 19


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

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
  1.    public int[] reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
  2.        if(left==right)
  3.            return reorganize2(v,x,left,right-1);
  4.        else{
  5.            int m = (left+right)/2;
  6.            if(v[m] <= x){
  7.                swap(v,m,left);
  8.                return reorganize2(v,x,left+1,right);
  9.            }else{
  10.                swap(v,m,right-1);
  11.                return reorganize2(v,x,left,right-1);
  12.            }
  13.        }
  14.    }
  15.  
  16.    public void swap(int[] v, int i, int j){
  17.        int tmp = v[i];
  18.        v[i] = v[j];
  19.        v[j] = tmp;
  20.    }

He probado a hacer ésto:
Código
  1.    public void reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
  2.        if(left==right)
  3.            reorganize2(v,x,left,right-1);
  4.        else{
  5.            int m = (left+right)/2;
  6.            if(v[m] <= x){
  7.                swap(v,m,left);
  8.                reorganize2(v,x,left+1,right);
  9.            }else{
  10.                swap(v,m,right-1);
  11.                reorganize2(v,x,left,right-1);
  12.            }
  13.        }
  14.    }
  15.  
  16.    public void swap(int[] v, int i, int j){
  17.        int tmp = v[i];
  18.        v[i] = v[j];
  19.        v[j] = tmp;
  20.    }
  21.  
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 am por LiLou » En línea

LiLou

Desconectado Desconectado

Mensajes: 19


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

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
(void *) en funciones
Programación C/C++
Shon 4 5,315 Último mensaje 25 Enero 2011, 16:06 pm
por Littlehorse
Problemas C de funciones , recursividad
Programación C/C++
Ateius 5 3,646 Último mensaje 4 Marzo 2012, 13:50 pm
por Xandrete
funciones INT vs VOID « 1 2 »
Programación C/C++
ALONSOQ 14 7,233 Último mensaje 4 Septiembre 2012, 16:49 pm
por ALONSOQ
Dudas sobre las funciones void en C « 1 2 »
Programación C/C++
niñoAtómico 11 5,608 Último mensaje 11 Octubre 2013, 22:41 pm
por vangodp
COMO DIVIDIR MI CODIGO EN FUNCIONES(VOID)
Programación C/C++
silfer_1908 1 1,864 Último mensaje 25 Octubre 2018, 00:28 am
por huchoko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines