Java - Duda Recursividad en Java

   
Vista:

Duda Recursividad en Java

Publicado por Elias (6 intervenciones) el 13/01/2012 14:07:08
Buenas,

Yo sigo a lo mio y cada vez veo un problema nuevo... Os cuento:

Como se realiza la recursividad en java?

Me explico con un ejemplo general:

---------------------------------------
Fun ejemplo(a)

If (caso_base){
return trivial
}
else{
s1 = ejemplo(b);
s2 = ejemplo(c);
s = otra_funcion(s1,s2);
return s
}
----------------------------------------

Con esto, lo que sucede es:

1 - Llamada inicial a ejemplo(a) --> Entra en ejemplo(b).
2 - En ejemplo(b) --> entra en un ejemplo(d).
3 - En ejemplo(d) llega a caso base y devuelve trivial --> sale de ejemplo(d) y continua secuencialmente con ejemplo(c).

En este punto y al salir del ejemplo(d) debería volver a ejemplo(b) y una vez terminado en este, volver a ejemplo(a).
Una vez terminado todo esto, comenzaría con la siguiente rama de la recursión que sería similar...

En conclusión: Entiendo que al llegar al caso trivial de una rama recursiva, no hace la vuelta en la pila de llamadas...

Como puedo indicar a Java(Eclipse), que una vez llegado al caso base, este recorra la pilla de llamadas de la recursividad en sentido contrario hasta llegar a la llamada inicial??

Espero haberme explicado bien. Cualquier duda no dudéis en hacermela y, como siempre, perdonad las molestias...

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Duda Recursividad en Java

Publicado por panchove (2 intervenciones) el 13/01/2012 14:55:16
El truco para cualquier programa recursivo es el control del retorno, en tu ejemplo nunca se cumple la condicion if(caso_base) por lo tanto la ejecucion de las llamadas se hacen infinitas agotando en poco tiempo la memoria por desbordamineto de pila (stack overflow)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Recursividad en Java

Publicado por Victor (1 intervención) el 16/01/2012 01:51:51
bueno soy nuevo en esto de aclarar dudas pero realice un metodo recursivo sencillo que te realiza la recursion cuando un numero es menor que 10 cuando llega a 10 t devuelve el valor es decir el numero 10

int suma(int a){
if (a<10){
return suma(a+1);
}
return a;
}

Bueno creo q funciona Insertas un valor "a" por supuesto menor que 10 si insertas uno mayor no entraria en la recursion y te devolveria el valor de "a"

espero haber sido de ayuda soy nuevo en esto de los foros y en java tambien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Recursividad en Java

Publicado por Elias (6 intervenciones) el 16/01/2012 17:32:38
Tenías razón Panchove. El problema venía de la definición del caso base. No siempre terminaban todos los casos y se formaba un bucle infinito...

Gracias por las molestias tomadas en contestar.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar