C/Visual C - Problema con Static en funcion recursiva

 
Vista:

Problema con Static en funcion recursiva

Publicado por Blanca (2 intervenciones) el 17/12/2006 13:59:10
buenas tardes;

Tengo una funcion recursiva en la cual necesito un contador que vala incrementando cada vez que se ejecuta un comando. El problema es q al ser recursiva si no uso static el contador se me pone a 0 cada vez. Me gustaria poder pone el contador a 0 una vez q finaliza la ejecucion o si existe otra forma de solucionarlo os agradeceria que me informarais.

Gracias
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:Problema con Static en funcion recursiva

Publicado por Fran (122 intervenciones) el 17/12/2006 16:51:38
a ver.... entiendo q tenes un main() dentro de el una funcion recursiva llamemosle rec() que ejecuta un comendo, asumo q tendras opcion de ejecurtar algunos comandos mas y salir luego, lo que qres es que la funcion recursiva ejecute comandos hasta cierto punto por q el usuario quiere o bien porq termino de hacer alguna operacion... estoy masomenos bien en lo q qres? si es asi... se me ocurre lo sgte:

static void rec(int cont); //asumo q ademas tomara otros parametros

int main()
{
int a = 0;

//agun codigo

rec(&a);
//ejecuto a comandos
a = 0;
//mas codigp

return 0;
}

static void rec(int *a)
{
//codigo, luego si ejecuto comandos incrementar a...

if(ejecuto_comando)
rec(a++)
else rec(a);
}

suert!
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:Problema con Static en funcion recursiva

Publicado por Blanca (2 intervenciones) el 17/12/2006 17:55:00
La funcion que yo tengo que hacer tiene q leer un dato y copiarlo a una tabla, mi problema es q al ser recursiva no puedo ir aumentando un contador de una forma simple , para ir asi escribiendo en las sucesivas posiciones de la tabla.
Al usar static puedo ejecutar la funcion una unica vez, ya que una vez ejecutada el contador almacena el valor mas alto que ha usado la anterior vez, por lo que no puedo colocar el primer dato en la posicion 0.
Si sabeis como puedo solucionar este problema u otra forma sin static os agradeceria muxo que me la explicarais.

Muchas gracias
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:Problema con Static en funcion recursiva

Publicado por Fran (122 intervenciones) el 18/12/2006 00:27:45
o sea, cada vez q se llama a esa funcion se llena una tabla con valores? o se llena hasta cierta cantidad de valores de la tabla, o se llena una pocision especifica de la tabla? No veo la necesidad de hacer una funcion recursiva igual... quizas sea pedido de algun materia? q rompes no? bueno, aka va masomenos lo q podrias hacer...

//ponele q es una linda tabla de 5x5 (alias matriz)
#define N 5
#define M 5

//la sgte funcion llena una tabla de nxm recursivamente
void llenar_tabla(int ** t, int n, int m)
{
//voy a poner un 1 en todas las posiciones de la tabla
//despues decime como es q tns q llenar la tabla

//supuestamente esto llena toda la fila, y luego bja de fila
if(n<N)
{
if(m<M)
{
t[n][m] = 1;
m++;
}
else
{
n++;
m=0;
}
llenar_tabla(t,n,m);
}
} //termina cuando no quedan filas por llenar

esto lo llamas desde el main con llenar_tabla(t, 0,0) si queres empezar desde la primera posicion o por ej llenar_tabla(t,3,4) si queres llenar desde la fila 4 casillero 5 hasta el final... previamente en el main tns q declarar

int ** t;

t = malloc(N*sizeof(int*));

for(i=0;i<N;i++)
t[i] = malloc(M*sizeof(int));


espero q te sirva!
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:Problema con Static en funcion recursiva

Publicado por Tom (619 intervenciones) el 18/12/2006 08:22:34
procesar(0)

int procesar(int c) {
....
c++;
if(condicion)
c = procesar(c);
return c;
}
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