Autor
|
Tema: De forma recursiva (Leído 19,315 veces)
|
:ohk<any>
Desconectado
Mensajes: 1.744
Yo lo que quiero que me salga bien es la vida.
|
Hola foro Aquí dos ejercicios. 1ro. Realizar un programa en Java que de forma recursiva verifique si un número es positivo. El método debe ser booleano, osea devolver true o false, dependiendo del número introducido. 2do. Realizar un programa en Java que de forma recursiva sume 2 números naturales. Sencillo cierto? Espero sus respuestas. Un saludo
|
|
|
En línea
|
Y es que a veces pienso que si no estuviera loco no podría salir adelante. Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
|
|
|
carlitos.dll
Desconectado
Mensajes: 266
|
No me parecen tareas recursivas. public boolean esPositivo(int numero) { return numero >=0; }
|
|
« Última modificación: 3 Septiembre 2008, 00:10 am por carlitos.dll »
|
En línea
|
|
|
|
:ohk<any>
Desconectado
Mensajes: 1.744
Yo lo que quiero que me salga bien es la vida.
|
No me parecen tareas recursivas. public boolean esPositivo(int numero) { return numero >=0; }
Lamento decirte que tu ejercicio esta mal.Cualquiera, uno de 1ro puede hacer lo que hiciste, no te ofendas pero yo lo pedí de forma recursiva.Mira, cuando me plantearon el ejercicio creí lo mismo que tú. Osea para que lo hago de forma recursiva si es muy simple sacarlo. Pero te pido que intentes hacerlo de forma recursiva, haber si es tan sencillo.
Ahora, lo de sumar dos números, de la misma forma, se puede hacer muy simple sin recursividad, pero yo lo estoy pidiendo recursivo, porque te hace analizar un poco mas el ejercicio, no digo que sea difícil, pero al menos el procedimiento cambia, con solo decirte que para sumar dos números, debes utilizar la resta. Espero lo resuelvan de forma recursiva. Un saludo
|
|
|
En línea
|
Y es que a veces pienso que si no estuviera loco no podría salir adelante. Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
|
|
|
chrominum
Desconectado
Mensajes: 567
Viceroy: No es lo que tengo, es COMO lo tengo
|
¿Con un if de pormedio?
|
|
|
En línea
|
|
|
|
:ohk<any>
Desconectado
Mensajes: 1.744
Yo lo que quiero que me salga bien es la vida.
|
¿Con un if de pormedio?
Si, el if es la condicionante que determina el axioma. Mira, voy a resolver la suma de dos números de forma recursiva. static int sumar(int a, int b) { if(b==0) return a; else return sumar(a, b-1) + 1; }
Explicando un poco if(b==0) return a;
Osea si uno de los dos números, en mi caso el que este en la variable "b" es cero entonces no tiene caso sumar nada, asi que retornamos el número de la otra variable, ejemplo: a = 5; b = 0; sumar = a; else return sumar(a, b-1) + 1;
ahora, por falso, lo que hacemos es reducimos el segundo parámetro que esta en nuestra variable "b" la cantidad de veces que se pueda hasta que llegue a cero. Y una ves que llegue a cero que hacemos? Pues, necesitamos un contador que nos diga cuantas veces se ha reducido el número y eso nos dará como resultado el número introducido. Entonces en lo que haya sumado el contador le aumentamos a; que esta fijado en el axioma, lo cual nos devuelve a + b, pero de forma recursiva. Nose si está claro, a veces no soy bueno explicando. Un saludo
|
|
|
En línea
|
Y es que a veces pienso que si no estuviera loco no podría salir adelante. Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
|
|
|
carlitos.dll
Desconectado
Mensajes: 266
|
No me ofendo, pero en el primer ejercicio, donde esta la recursividad?
Y en tu segundo código, si quieres sumar 3 + -2, queda recursando infinitamente, y se cae por StackOverflowError.
Wikipedia dice, que la recursividad debe utilizarse en procesos recursivos, como la factorización.
|
|
« Última modificación: 4 Septiembre 2008, 03:20 am por carlitos.dll »
|
En línea
|
|
|
|
:ohk<any>
Desconectado
Mensajes: 1.744
Yo lo que quiero que me salga bien es la vida.
|
No me ofendo, pero en el primer ejercicio, donde esta la recursividad?
Pues, cuando encuentres la recursividad habrás resuelto el ejercicio. Y en tu segundo código, si quieres sumar 3 + -2, queda recursando infinitamente, y se cae por StackOverflowError.
no estoy sumando 3 + -2, analiza nuevamente el código y te darás cuenta que no sumo la 2da variable. return sumar(a, b-1) + 1;
Lo que en verdad sumo es a + el contador return sumar(a, b-1) + 1; , ese +1 esta incrementando cada ves que el número dentro la variable b se va reduciendo. Ahora claro está de que si no existiera el axioma if(b==0) return a;
nada tendría sentido. Pero ese if, es el encargado de para el proceso y lanzar un resultado. Mira, cuando a mi me dijeron que lo haga, yo lo creí loco a mi docente, porque pensaba lo mismo que tu, pero a tanta insistencia me hizo pensar un poco y alcancé el resultado.Un saludo
|
|
|
En línea
|
Y es que a veces pienso que si no estuviera loco no podría salir adelante. Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
|
|
|
Hadess_inf
Desesperado
Colaborador
Desconectado
Mensajes: 2.048
Nueva Vida
|
1ro. Realizar un programa en Java que de forma recursiva verifique si un número es positivo. El método debe ser booleano, osea devolver true o false, dependiendo del número introducido: public boolean tipo(int num) { if(num==0) return tipo(num); else { if(num>0) return true; else return false; } }
2do. Realizar un programa en Java que de forma recursiva sume 2 números naturales. static int sumar(int a, int b) { if(b==0) return a; else { if(b>0) return sumar(a, b-1) + 1; else sumar(a, b+1) - 1; } }
Creo que es asi.
|
|
« Última modificación: 4 Septiembre 2008, 04:09 am por hadess_inf »
|
En línea
|
|
|
|
carlitos.dll
Desconectado
Mensajes: 266
|
ohk, me refería a que tu code, si le pasas parámetros al método, como por ejemplo: System. out. println(sumar (3, -2));
Se queda infinitamente recursando. El code que postió hadess_inf, funciona. public static int sumar(int a, int b) { if(b==0) return a; else { if(b>0) return sumar(a, b-1) + 1; else sumar(a, b+1) - 1; } }
Pero a este si se le pasa 0, queda en un ciclo infinito. public boolean tipo(int num) { if(num==0) return tipo(num); else { if(num>0) return true; else return false; } }
Me rectifico, en el sentido de que si se podía sumar dos números recursivamente, pero en cuanto a verificar el tipo, pienso que no es recursivo.
|
|
|
En línea
|
|
|
|
:ohk<any>
Desconectado
Mensajes: 1.744
Yo lo que quiero que me salga bien es la vida.
|
Le encuentran un pero a todo no? Bueno si, en caso de que quieran meter un número negativo para "b" pues si. Pero: 2do. Realizar un programa en Java que de forma recursiva sume 2 números naturales.
es.wikipedia.org/wiki/Número naturalBueno, igual el ejercicio esta bien resuelto. Lo de verificar si un número es positivo lo posteo luego, ya tengo sueño Un saludo
|
|
|
En línea
|
Y es que a veces pienso que si no estuviera loco no podría salir adelante. Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
recorrido de una matriz de forma recursiva
Programación General
|
dark_headhunter
|
4
|
17,585
|
10 Junio 2011, 23:39 pm
por Khronos14
|
|
|
Cargar una matriz de forma recursiva[c]
Programación C/C++
|
axeelcs
|
3
|
13,096
|
1 Septiembre 2011, 20:43 pm
por LearningSpanishProgrammer
|
|
|
[pregunta]copiar y reescribir directorios de forma recursiva winapi
Programación C/C++
|
daryo
|
0
|
1,640
|
15 Julio 2015, 21:13 pm
por daryo
|
|
|
Calcular Divisores, Forma recursiva
Java
|
konika_bn
|
0
|
3,266
|
17 Noviembre 2015, 12:38 pm
por konika_bn
|
|
|
Problema con funcion palindroma en forma recursiva
Programación C/C++
|
palacio29
|
1
|
1,872
|
12 Junio 2019, 04:07 am
por K-YreX
|
|