Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: rjrn en 12 Febrero 2009, 04:28 AM

Título: Recursividad
Publicado por: rjrn en 12 Febrero 2009, 04:28 AM
 :laugh:
Título: Re: Recursividad
Publicado por: Amerikano|Cls en 12 Febrero 2009, 06:28 AM
No entendí, muy bien, explicate mejor, o pon algun ejemplo bien claro  ;)
Título: Re: Recursividad
Publicado por: -Gosw- en 12 Febrero 2009, 07:35 AM
Cita de: rjrn en 12 Febrero 2009, 04:28 AM
Hola quisiera que me ayudaran con la siguiente asignacion: Dada una matriz NxN(n es par) de nros enteros, desarrollar un programa para determinar la submatriz cuyas suma de valores sea la mayor. Utilice la estrategia divide y venceras. La salida se debe mostrar por pantalla con la matriz original, la submatriz correspondiente y y el maximo valor de la suma de sus elementos. Si existiese mas de una solucion, estas deben mostrarse.  Les agradeceria mucho que me ayudaran :P

Bueno tengo un code basado en esa estrategia, es el metodo de ordenamiento mas avanzado, el quicksort... Aqui esta, en C, pero puedes tomar la idea e implementarla en Java...

Ordenamiento de arreglos por el método rápido (quicksort)

PROG0021 - C/C++ (Codigo)

El método rápido o quicksort, es el algoritmo para ordenamiento de arreglos más rápido que existe. Además, es matemáticamente demostrable, que no puede existir un método mejor. Se basa en el principio "divide y vencerás". Su implementación sin embargo, reviste complejidad, ya que se trata de un algoritmo recursivo por naturaleza.

CitarEl método rápido o quicksort, es el algoritmo para ordenamiento de arreglos más rápido que existe. Además, es matemáticamente demostrable, que no puede existir un método mejor. Se basa en el principio "divide y vencerás". Su implementación sin embargo, reviste complejidad, ya que se trata de un algoritmo recursivo por naturaleza.

void SortArray (int array[],int first,int last)
{
   int i,j,p,t;

   // i se hace igual al índice del primer elemento 
   i= first; 
   // y j igual al índice del último elemento
   j= last; 
   // p se hace igual al elemento pivote del arreglo
   p= array[(first+last)/2]; 

   do {
      // se hace la partición del arreglo
      while (array[i]<p) i++;
      while (p<array[j]) j--;
         if (i<=j)
         {
            // se intercambian los elementos i-esimo y j-esimo del arreglo
            t= array[i];
            array[i]= array[j];
            array[j]= t;
            i++;
            j--;
         }
   } while (i<=j);
   if (first<j) SortArray(array,first,j);
   if (i<last) SortArray(array,i,last);
}

http://www.megaupload.com/?d=QPSO2CJZ

Saludos y espero te sirva para lo que necesitas...
Título: Re: Recursividad
Publicado por: -Gosw- en 12 Febrero 2009, 07:36 AM
Perdon, di a citar y no a editar... Borren esta...
Título: Re: Recursividad
Publicado por: Amerikano|Cls en 12 Febrero 2009, 15:21 PM
Solo pon tu code dentro de la etiqueta code=java para que se resalten las instrucciones respectivas  ;)
Título: Re: Recursividad
Publicado por: sapito169 en 12 Febrero 2009, 23:56 PM
tu enunciado no se entiende para nada
Título: Re: Recursividad
Publicado por: Amerikano|Cls en 23 Febrero 2009, 18:53 PM
Y ahora te burlas de nosotros?  :huh: :-\ :¬¬
Título: Re: Recursividad
Publicado por: -Gosw- en 23 Febrero 2009, 19:35 PM
Cita de: AmeRiK@nO en 23 Febrero 2009, 18:53 PM
Y ahora te burlas de nosotros?  :huh: :-\ :¬¬

Que gente tan idiota... Alguien que borre este tema...
Título: Re: Recursividad
Publicado por: weirdtyping en 17 Marzo 2009, 19:33 PM
no todavia no lo borren, tengo una duda de recursividad tambien, el ejercicio consiste en llenar un vector de 20 elementos de 0 y 1 al azar, tonces las operaciones que se deben hacer con recursividad son, contar los 1 y los 0, mostrar los datos, camiar los 0 por 2 y los 1 por 7, etc etc... tonces no entendi muy bien el concepto puesto que no me sale xDDD porfa diganme por que no funciona esto..

public String shoNum(int n){
        if(n == 20){
            return datos;
        }
        else{
            datos += arreglo[n]+"\n";
            return shoNum(n++);
        }
    }


es un pequenio tramo de mi codigo, segun esto me debe de guardar todos los datos que tenga el vector en "datos " y despues al final  mandarme "datos" ya con todo incluido, la verdad estoy un poco confundido con esto de recursividad. espero que me ayuden gracias