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

Ayuda con recursion en java

Estas en el tema de Ayuda con recursion en java en el foro de Java en Foros del Web. Alguien que me ayude!!!!! Que hace el siguiente método recursivo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original //El paramétro b debe ser un entero //positivo para ...
  #1 (permalink)  
Antiguo 11/06/2010, 10:24
 
Fecha de Ingreso: abril-2010
Ubicación: Manizales
Mensajes: 91
Antigüedad: 14 años, 7 meses
Puntos: 2
Ayuda con recursion en java

Alguien que me ayude!!!!!
Que hace el siguiente método recursivo:

Código Java:
Ver original
  1. //El paramétro b debe ser un entero
  2. //positivo para evitar la recursividad infinita
  3.  
  4. public int misterio(int a, int b)
  5. {
  6.     if (b == 1)
  7.         return a;
  8.     else
  9.         return a + misterio(a, b-1);
  10. }

Es un ejercicio del libro Deitel & Ditel de "Como programar en java 5ta edición",
Llevo 3 noches pensando y no he podido, se puede decir que estoy frustrado

Gracias
  #2 (permalink)  
Antiguo 11/06/2010, 11:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Ayuda con recursion en java

Sustituye a y b por dos valores, sigue la ejecución... y no es tan complicado. Lo mejor es empezar con valores que esten cerca de la condicición de finalización (b==1) e ir avanzando de ahí.

PD: Para estar en un libro de como programar en Java es un ejemplo con una "cagada" bastante gorda. Si se le pasa un b <= 0... pum.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 11/06/2010, 12:21
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Respuesta: Ayuda con recursion en java

Cita:
Iniciado por GreenEyed Ver Mensaje
PD: Para estar en un libro de como programar en Java es un ejemplo con una "cagada" bastante gorda. Si se le pasa un b <= 0... pum.


Pésimo comentario, ya que son EJERCICIOS LÓGICOS BÁSICOS (no tienen porque cubrir/incluir todos los aspectos o herramientas del lenguaje, depuraciones/comprobaciones/validaciones, exceptions... etcc), son justamente para quienes "se pierden y/o pasan 3 noches sin poder resolverlos" ya que no tiene el hábito ni técnicas de pensar de esta manera.


afruizc
EL ejercicio simula una operación matemática de suma (suma a, tantas veces como le indique b), que sería lo mismo que hacer (a * b)
es decir una simple MULTIPLICACiÓNNnnnnnnnnn
  #4 (permalink)  
Antiguo 11/06/2010, 14:24
 
Fecha de Ingreso: abril-2010
Ubicación: Manizales
Mensajes: 91
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda con recursion en java

Cita:
Iniciado por GreenEyed Ver Mensaje
Sustituye a y b por dos valores, sigue la ejecución... y no es tan complicado. Lo mejor es empezar con valores que esten cerca de la condicición de finalización (b==1) e ir avanzando de ahí.

PD: Para estar en un libro de como programar en Java es un ejemplo con una "cagada" bastante gorda. Si se le pasa un b <= 0... pum.
Primero hay que leer, en las dos primeras líneas dice que b tiene que ser un entero positivo........

Y el ejercicio completo consiste en arreglarlo para que funcione con parametros positivos

Gracias furizZZZ........
Ya lo comprendí y lo arreglo para que pudiera multiplicar números negativos, muchas gracias:
Adjunto el código de el programa completo:

Código Java:
Ver original
  1. int multip(int a, int b)
  2. {
  3.     if (b == 1 || b == -1)
  4.         return a;
  5.     else if(b == 0) //solo entra aca cuando en la primer llamada b == 0
  6.         return 0;
  7.     else if (b > 0)
  8.         return a + multip(a, b-1);
  9.     else
  10.         retrun -(a + multip(a, b+1));
  11. }

Última edición por afruizc; 11/06/2010 a las 14:25 Razón: Gracias furizZZZ........
  #5 (permalink)  
Antiguo 12/06/2010, 04:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Ayuda con recursion en java

Cita:
Iniciado por FiruzzZ Ver Mensaje


Pésimo comentario, ya que son EJERCICIOS LÓGICOS BÁSICOS (no tienen porque cubrir/incluir todos los aspectos o herramientas del lenguaje, depuraciones/comprobaciones/validaciones, exceptions... etcc), son justamente para quienes "se pierden y/o pasan 3 noches sin poder resolverlos" ya que no tiene el hábito ni técnicas de pensar de esta manera.
Precisamente por ejemplos como este es por los que la gente aprende a programar como aprende y luego salen los programas como salen. Simplemente cambiar el == por otro tipo de comparación o comprobar que el entero es positivo y la función no podría entrar en un bucle infinito (bueno, hasta que la recursión haga saltar la pila).

Y ya entiendo que no tendrá ni hábitos ni técnicas para pensar de esa manera, y si se le dan las soluciones hecha no las adquirirá nunca.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 12/06/2010, 04:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Ayuda con recursion en java

Cita:
Iniciado por afruizc Ver Mensaje
Primero hay que leer, en las dos primeras líneas dice que b tiene que ser un entero positivo........

Y el ejercicio completo consiste en arreglarlo para que funcione con parametros positivos
Lo primero es la educación, que no parece el caso, y lo segundo es que no importa si el comentario dice que ese tiene que ser un entero positivo. Los comentarios no afectan para nada al programa. Si a ese método se le pasa un valor 0 o menor, entonces entrará en recursión infinita hasta que salte el programa.

Y si el ejercicio consiste en retocarlo, pues me parece bien por que el programa así es "peligroso" pero como el ejercicio completo no lo has mencionado y mi telepatía está en horas bajas, pues mira no lo sabía. Claro que si el ejercicio consiste en arreglarlo, será por que así como está no está bien, ¿no?

De todas formas no pasa nada, mi disculpas por intentar que resolvieras el problema por tu cuenta y hacer notar que había un error en el programa, está claro que no necesitais mi ayuda para nada así que no os molestaré más.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 13/06/2010, 08:43
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Respuesta: Ayuda con recursion en java

Cita:
Iniciado por GreenEyed Ver Mensaje
Precisamente por ejemplos como este es por los que la gente aprende a programar como aprende y luego salen los programas como salen. Simplemente cambiar el == por otro tipo de comparación o comprobar que el entero es positivo y la función no podría entrar en un bucle infinito (bueno, hasta que la recursión haga saltar la pila).
.......

Creo que como todo libro respetable de programación ( y este es uno de esos en todas sus ediciones), siempre te empiezan planteando un método simple (con varias carencias) y una vez que vas avanzando te las va haciendo notar, seguramente dando vuelta la página del libro ya decía algo así "como habrás notado nuestra función/método no abarca los números < 1 bla bla ......."; y la solución o una propuesta de implementación de posibles soluciones...
Pero bue.. c/u tiene su punto de vista sobre esto, nunca fue mi intensión ofender ni nada, solo una disidencia para con tu comentario.
Saludos

Etiquetas: metodos, recursion
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 07:08.