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

Creo demasiadas variables?

Estas en el tema de Creo demasiadas variables? en el foro de C/C++ en Foros del Web. Hola, tengo un problema y me resulta muy difícil solucionarlo. Tengo un programa que ejecuta una función que es recursiva. Esta función es recursiva y ...
  #1 (permalink)  
Antiguo 12/01/2011, 10:38
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Creo demasiadas variables?

Hola, tengo un problema y me resulta muy difícil solucionarlo.


Tengo un programa que ejecuta una función que es recursiva.
Esta función es recursiva y se llama dentro de ella misma muchísimas veces debido a bucles que hay en ella.
El número de repeticiones de los bucles se puede cambiar cambiando el valor de una constante.

Si la constante es pequeña, no hay tantas llamadas recursivas. Pero si es grande se producen muchísimas llamadas y se corta la ejecución.

Se corta porque cada vez que se hace una llamada recursiva, las variables de la cabecera de la función son creadas de nuevo para almacenar el valor de esa variable entonces se crea en otra dirección de memoria, es decir, en total se crean muchísimas variables, porque en cada llamada tendrá su propio valor y necesita estar en otro sitio.

Por curiosidad hice un printf de la dirección de memoria para ver a cuales se accedían y cuando falla me encontraba cosas como Direccion -1.#QNAN0 .

¿Cómo podría salucionar esto?
MUCHISIMAS GRACIAS
  #2 (permalink)  
Antiguo 12/01/2011, 10:50
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Creo demasiadas variables?

Estoy seguro de que estoy desbordando la pila por todas las llamadas recursivas que hago.

Pero necesito hacerlas, ¿qué podría hacer?
  #3 (permalink)  
Antiguo 12/01/2011, 13:32
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Creo demasiadas variables?

Hola:

Convierte tu algoritmo recursivo en un algoritmo iterativo. Elimina la recursividad.

saludos;

Nup_
  #4 (permalink)  
Antiguo 12/01/2011, 17:20
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Creo demasiadas variables?

la resursividad solo hay que hacerla cuando va a haber pocas llamadas y estas estan muy controladas.

nup_ puedes especificar que es un algoritmo iterativo?
  #5 (permalink)  
Antiguo 13/01/2011, 07:09
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Creo demasiadas variables?

Aquí tienes una guía de como puedes hacerlo:
http://www.infor.uva.es/~mserrano/EDI/cap1.pdf (página 20 en adelante)
http://www.fdi.ucm.es/profesor/ricar...ur-iter-a2.pdf
saludos;

Nup_

Última edición por nup_; 13/01/2011 a las 07:38

Etiquetas: variables
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 14:54.