Programación General > Java

 error Exception in thread "main" java.lang.StackOver

<< < (2/3) > >>

tomas_sauron:
ahhhhhhhhhhhhhhhhh ya entndi !!! noc xq le pusist un bucle ??? recursividad es anti bucle !! por asi dcirlo  <_<
o sea si usas recursividad no pods usar bucles ya sean for while do while xq lo q ac la recursividad s repetir varias vcs una llamada a una funcion (metodo ) hasta q una condicion d cort se cumpla y salga con 1 resultado
x ejemplo
 
--- Código: Java ---if (n==0){                        n=1;                        return n;                   }                     else{                             return  factorial(n-1)*n    aca factorial c llama el metodo
y se llama asi mismo restandole al argumento n una unidad (o sea n-1)y lo hace
hasta q n valga cero cuando n vale cero sale con un uno devuelve el resultado d acr 1*factorial(2)*factorial(3)*factorial(4) por eso
q no ac falta un while sino  esta d mas por eso cicla infinitamente
espero t sirva sino ya sabs pregunta d vuelta !!  [/color]

kas09013:
Muchas garcias! :) si ya ahora si corre bien , pero que cres! no hace lo que quiero creo que lo no hice bien por que no los acomoda como el ordenamiento de seleccion! o.O lo ordena como inserccion !u.U ya me estresee u.u empezzare de nuevo a crearlo si tienes un ejemplo de seleccion recursivo te lo agradeceria muucho. Sino de todas formas muchisiimas gracias :)

kas09013:
ya lo hicee! :) pero no me los ordena bien alguna idea?
 import java.io.*;//Libreria De Java Para Ingresar Datos Desde Teclado
class SeleccionRecursivo2{// Nombre de La Clase
public static int Seleccion(int v[], int n){
int i, minimo,l;
   if (n>=1) {
      minimo=0;
   for(i=1;i<n;i++)
      if(v<v[minimo])
      minimo=i;
      i=v[0];
      v[0]=v[minimo];
      v[minimo]=i;
   
   
   return   Seleccion(v,n-1);
   }else{
   return 0;
}
}
public static void main(String args[])throws IOException{
BufferedReader res1=new BufferedReader(new InputStreamReader(System.in));
long tiempoInicio = System.currentTimeMillis();
   int n;
   int v[]=new int [15];//Declaracion De Arreglo
   int res;// Declaracion De Variable
        System.out.println ( "n||************** Metodo De Odenacion Seleccion **************|| n||                                                         || ");
       System.out.println ( "||   1.-Cantidad De Numeros A Ordenar:           ||");
       System.out.print( "||      ");
       n=Integer.parseInt(res1.readLine());//Lee Los Datos Introducidos Desde Teclado
       System.out.println ( "||   2.-Numeros A Ordenar:                     ||");
             for (int i=0; i<n; i++){// Ciclo For Para Pedir que Indroduzca Los Valores
                System.out.print( "||      ");
               v=Integer.parseInt(res1.readLine());}// Lee y Almacena Los Datos Desde teclado En El Arreglo
                System.out.println("||   3.-Ordenacion De Numeros                 ||  n");
                   for (int i=0; i<n; i++){//Ciclo For Para La Ordenacion de Numeros
                      System.out.print("|");
                      System.out.print(v + "|");
                      }
       System.out.println(" ");
       res=Seleccion(v,n);//Llama All Metodo anterior Para Que Devuelva Datos
       long totalTiempo = System.currentTimeMillis() - tiempoInicio;// Funcion Que Mide El Tiempo Y Calcula El Tiempo Total Empleado A Partir De La Diferencia Del Tiempo Inicial Y Final
      System.out.println("n||El tiempo total de la ejecucion es :" + totalTiempo + " miliseg");
       System.out.println ( "n||**********************************************************||");
     
      }    
} //fin clase seleccion recursivo

kas09013:
esto de recursividad no me sale, lo eh vuelto a cambiar por que no hacia bien los cambios si lo acomodaba pero no por orden de seleccion eh cambiado el codigo pero solo me  imprime el primer cambio alguna sugerencia?

--- Código: Java ---  import java.io.*;//Libreria De Java Para Ingresar Datos Desde Tecladoclass SeleccionRecursivo5{// Nombre de La Clasepublic static int Seleccion(int v[], int n, int m){int i=0, j, min, k, l;     int cambio;     if (m<n) { min=v[i];// Asignacion Del Valor En La Variable Min En El Arreglo a[i]             k=0;// Asignacion De 0 A La Variable k             cambio=0;//Asignacion de 0 A La Variable cambio         for(j=m+1; j<n; j++)//For Para Seguir Ordenando Numeros           if(v[j]<min)//If Que Compara Valor Del Arreglo a[j] Con min             min=v[j];//Asignacion Del Valor De La Variable min En El Arreglo a[j]             k=j;//Asigna Valor De k En j             cambio=1;//A Cambio Le Asigna El valor De 1                                  if(cambio==1){// Comparacion Del Valor de Cambio            v[k]=v[i];// Asignacion Del Valor Del arrreglo a[k] en a[i]            v[i]=min;// Asignacion Del Valor Del Arreglo a[i] En La Variable Min            System.out.println(" ");              for (l=0; l<n; l++){// For Para Imprimir La Ordenacion De Los Numeros              System.out.print("|");              System.out.print(v[l] + "|");             }           }           return  Seleccion(v,n,m+1);}else{return 0;}}public static void main(String args[])throws IOException{BufferedReader res1=new BufferedReader(new InputStreamReader(System.in));long tiempoInicio = System.currentTimeMillis();     int n,m=0;    int v[]=new int [15];//Declaracion De Arreglo    int res;// Declaracion De Variable        System.out.println ( "n||************** Metodo De Odenacion Seleccion **************|| n||                                                         || ");       System.out.println ( "||   1.-Cantidad De Numeros A Ordenar:            ||");       System.out.print( "||      ");        n=Integer.parseInt(res1.readLine());//Lee Los Datos Introducidos Desde Teclado        System.out.println ( "||   2.-Numeros A Ordenar:                    ||");            for (int i=0; i<n; i++){// Ciclo For Para Pedir que Indroduzca Los Valores                 System.out.print( "||      ");                v[i]=Integer.parseInt(res1.readLine());}// Lee y Almacena Los Datos Desde teclado En El Arreglo                System.out.println("||   3.-Ordenacion De Numeros                  ||  n");                     for (int i=0; i<n; i++){//Ciclo For Para La Ordenacion de Numeros                        System.out.print("|");                        System.out.print(v[i] + "|");                        }       System.out.println(" ");       res=Seleccion(v,n,m);//Llama All Metodo anterior Para Que Devuelva Datos       long totalTiempo = System.currentTimeMillis() - tiempoInicio;// Funcion Que Mide El Tiempo Y Calcula El Tiempo Total Empleado A Partir De La Diferencia Del Tiempo Inicial Y Final       System.out.println("n||El tiempo total de la ejecucion es :" + totalTiempo + " miliseg");       System.out.println ( "n||**********************************************************||");            }    } //f 

kas09013:
:) gracias por tu ayudaa ya pude terminarlo :)

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa