C/Visual C - Compiladores y Recursión

 
Vista:

Compiladores y Recursión

Publicado por Mariano (12 intervenciones) el 15/02/2002 16:32:01
Tengo los fuentes de una aplicación, que tiene una función recursiva (se llama a si misma). Compile bajo Visual C++ 6.0, pero, no me eliminó la recursión y por ende, la gran cantidad de llamadas, satura la pila. Existe alguna forma de decirla al compilador que elimine la recursión, u otro compilador que lo haga??
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

RE:Compiladores y Recursión

Publicado por Alexis Leung (70 intervenciones) el 16/02/2002 17:15:32
Debe ser que la función está mal escrita, porque Visual C++ 6.0 tiene bastante espacio en la pila y es difícil sobrepasarse de ella. Supongo que debes revisar con más detalle esa función recursiva.
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

RE:Compiladores y Recursión

Publicado por Jose (4 intervenciones) el 16/02/2002 20:20:12
Creo que Alexis tiene razón. El compilador de Visual C++ 6.0 realiza una optimización de cálculo pero no elimina recursividades (sólo las optimiza) o eso tengo entendido. Creo que tu problema es que la recursividad no acaba (por eso se desborda la pila). Te muestro la forma general de una recursividad (en notación merlín) por si te ayuda:

función RECURSIVIDAD( <parametros> ) ret <retorno>
si ( condición_de_no_recursividad( <parametros> ) )
<retorno> := <valores_en_caso_no_recursivo>
sino
{ en el caso de cumplirse la condición de recursividad }
<parametros> := <actualizar parametros>
<retorno> := RECURSIVIDAD( <parametros> )
<retorno> := <actualizar retorno>
ffunción

Espero que te haya ayudado.
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

RE:Compiladores y Recursión

Publicado por Mariano (12 intervenciones) el 17/02/2002 01:28:29
No, la función está optinizada, es un código de busqueda en un array bidimensional de int del camino de unión de dos puntos, siendo dicha union sensible al valor del int y de acuerdo a este pasa o no por tal punto, dado que representa las uniones entre componentes visuales a ser impresos en pantalla. GRACIAS POR LA AYUDA, pero una matriz del tamaño que manejo, satura la pila por la misma naturaleza del algoritmo.
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

RE:Compiladores y Recursión

Publicado por Googol (255 intervenciones) el 18/02/2002 16:21:12
Es una lata, pero si el compilador no te lo pasa a iterativo (quizá sea demasiado complicado y no es capaz), pasalo tú, ¿no?
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