Foros del Web » Programación para mayores de 30 ;) » Java »

Recursividad en Java

Estas en el tema de Recursividad en Java en el foro de Java en Foros del Web. Hola, necesito que me ayudaran con este programa, como hago o que debo agregar para que cuando ingreso un valor de 0 o menor de ...
  #1 (permalink)  
Antiguo 02/10/2011, 13:33
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 8 meses
Puntos: 9
Pregunta Recursividad en Java

Hola, necesito que me ayudaran con este programa, como hago o que debo agregar para que cuando ingreso un valor de 0 o menor de cero, el me muestre que el numero no es valido y salga del programa, la verdad soy un poco principiante en java y por eso pido esta pequeña ayuda

Código Javascript:
Ver original
  1. import java.util.Scanner;
  2.  
  3. public class Main
  4. {
  5.     public static void main(String [] args)
  6.     {
  7.  
  8.         Scanner reader = new Scanner(System.in);
  9.  
  10.         int numero;
  11.        
  12.         System.out.println("Tarea #1-UNED");
  13.         System.out.println("Ingrese un numero para descomposion:");
  14.         numero=reader.nextInt();
  15.  
  16.         DescomposicionSumandos(numero);
  17.  
  18.     }
  19.  
  20.     public static void DescomposicionSumandos(int numero)
  21.       {
  22.          DescomponEnSumando(numero, 1, 0, " ", numero);
  23.     }
  24.     private static void DescomponEnSumando(int n, int pos, int ninc, String s, int numero)
  25.       {
  26.        if (ninc == numero)
  27.                System.out.println(s);
  28.             for (int i = pos; i <= n; i++)
  29.             {
  30.                  DescomponEnSumando(n - i, i, ninc + i,s+i+"", numero);
  31.             }
  32.  
  33.     }
  34. }
  #2 (permalink)  
Antiguo 02/10/2011, 13:43
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Recursividad en Java

Basta con una simple sentencia if. Por cierto lo que quieres no tiene que ver nada con recursividad, mas con validacion de datos.

Luego que recoges el numero:
numero=reader.nextInt();
Haz un condicional:
Código Javascript:
Ver original
  1. if(numero > 0) {
  2.   //Llamo a la funcion que descompone
  3. } else {
  4.   //Numero no valido
  5. }
  #3 (permalink)  
Antiguo 02/10/2011, 14:06
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Recursividad en Java

Perdona, lo hice asi pero igual no me sale :P

Código Javascript:
Ver original
  1. import java.util.Scanner;
  2.  
  3. public class Main
  4. {
  5.     public static void main(String [] args)
  6.     {
  7.  
  8.         Scanner reader = new Scanner(System.in);
  9.  
  10.         int numero=0;
  11.  
  12.         while(numero<=0)
  13.         {
  14.  
  15.             System.out.println("Tarea #1-UNED");
  16.             System.out.println("Ingrese un numero para descomposion:");
  17.             numero=reader.nextInt();
  18.  
  19.             if(numero<=0)
  20.             {
  21.                 System.out.println("Numero Invalido-Digite de nuevo!!!");
  22.             }
  23.         }
  24.  
  25.             DescomposicionSumandos(numero);
  26.     }
  27.  
  28.     public static void DescomposicionSumandos(int numero)
  29.       {
  30.          DescomposicionCompleta(numero,0, " ", numero);
  31.     }
  32.     private static void DescomposicionCompleta(int x, int pos,String s, int numero)
  33.       {
  34.             for (int i = pos; i <= x; i++)
  35.             {
  36.                  DescomposicionCompleta(x - i, i,s+i+"", numero);
  37.             }
  38.    
  39.     }
  40. }
  #4 (permalink)  
Antiguo 02/10/2011, 14:50
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Recursividad en Java

Ahora si hay un problema con la recursividad. El codigo cae en un bucle infinito.
¿Se supone que tu código descomponga un numero en sus sumandos?
Es decir: 11 = ¿ 10 + 1 ?
Por cierto, tus métodos no devuelven nada. Imposible saber cual será el resultado si no devuelves ni imprimes nada.
  #5 (permalink)  
Antiguo 02/10/2011, 18:33
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Recursividad en Java

mmmm terminado, tuve unos errores pero listo

Etiquetas: excepcion, recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:27.