Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Salir de una Funcion Recursiva

Estas en el tema de Salir de una Funcion Recursiva en el foro de C/C++ en Foros del Web. Hola Buenas. Tengo una gran duda: Tengo un contenedor con elementos y otros contenedores donde tambien tienen otros elementos y otros contenedores, para recorrer todo, ...
  #1 (permalink)  
Antiguo 27/09/2008, 12:48
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Salir de una Funcion Recursiva

Hola Buenas.

Tengo una gran duda:

Tengo un contenedor con elementos y otros contenedores donde tambien tienen otros elementos y otros contenedores, para recorrer todo, hago una funcion recursiva que va leyendo los elementos y si encuentra otro contenedor se vuelve a llamar la funcion asi sucesivamente.

Ahora, yo quiero que sea donde sea cuando encuentre un determinado elemento se salga de la funcion pero no volviendo atras sino salir del todo, sin que continue la recursion, que se pare la recursion, no kiero hacer nada mas, es decir, un BREAK MODE GOD si puede ser.

¿Alguna idea?
  #2 (permalink)  
Antiguo 27/09/2008, 13:10
Avatar de antoniog  
Fecha de Ingreso: junio-2006
Mensajes: 118
Antigüedad: 17 años, 11 meses
Puntos: 4
Respuesta: Salir de una Funcion Recursiva

Hola,

Pues segun yo no existe. Lo que podrias hacer es regresar un valor que indique a la funcion que la llamo que no siga recorriendo los contenedres, y que a su vez se lo indique a la funcion que la llamo, y asi sucesivamente, mas o menos asi:

Código:
int funcion_recursiva(contenedor)
{
int val=0;
if(encontre lo que buscaba en el contenedro)
   {
   val=1;
   }
else
   {
   if mas contenedores
      {
      por cada contenedor hijo hace
         if(funcion_recursiva(contenedor_hijo))
              {
               val=1;
                break;
                }
      }
   }
return(val);
}
Aunque si estas haciendo un recorrido de algo como un [arbol, igual y lo podrias hacer con una pila. En la pila vas guardando los contenedores que faltan por visitar.
1- Sacas un contenedor de la pila, si encuentras lo que buscabas, pues ya terminas y eliminas la pila.
2- Si no, pues ves si tiene mas contenedores hijos y los agregas a la pila, y regresas al paso 1.

Saludos
__________________
Mis pininos en blogs: prog en C, cursos

Última edición por antoniog; 25/10/2009 a las 13:23
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 20:05.