Título: puntero, funcion recursiva y segmentation fault Publicado por: evilraziel en 2 Abril 2014, 16:32 pm Hola a todos, este es mi primer post asi que mucho gusto de participar en esta comunidad! :D :laugh: ;-)
Bueno al grano, tengo un codigo en c que me devuelve un segmentation fault. Se que es problema de reservar memoria pero no sé cuando ni como. Agradeceria mucho que alguien me explicara por que pasa: el codigo calcula fibonacci recursivamente, no hagais caso de la llamada, pensad que los valores se entran correctamente. llamada del main: . . . int *s rfib(s,0,s); void rfib(int *fib, int x, int *last) { if (x==0){ *fib=0; } if (x==1) *fib=1; else if (x>1) *fib=fib[-1]+fib[-2]; if (fib+1!=last) rfib(fib++,x++,last); } Título: Re: puntero, funcion recursiva y segmentation fault Publicado por: eferion en 2 Abril 2014, 16:45 pm Bienvenido al foro.
Primera lección: El código etiquétalo con las etiquetas GeSHi correspondientes... así aparecerá coloreado y con un formato más legible. Código
Eso son postincrementos... es decir, es equivalente a: Código
Vamos que estás haciendo la misma llamada todo el tiempo. Además, en tu ejemplo pasas: Código
Es decir, fib == last, luego... Código
va a ser siempre cierto... más bien debería ser Código
PD.: parto de la base de que *s está debidamente inicializado. Un saludo. Título: Re: puntero, funcion recursiva y segmentation fault Publicado por: evilraziel en 2 Abril 2014, 18:53 pm Muchas gracias! no sabes las vueltas que le he dado al codigo y no me había fijado en que no se pueden pasar parametros tipo x++ a una funcion ;D ;D
Repito muchisimas gracias! nos vemos pronto, 1 saludo! Título: Re: puntero, funcion recursiva y segmentation fault Publicado por: noele1995 en 2 Abril 2014, 20:28 pm Bueno x++ lo que va a hacer es incrementar despues de la llamada a la funcion, pero podrias llamar a la funcion con ++x, que incrementaria antes de la llamada.
Código
Saludos Título: Re: puntero, funcion recursiva y segmentation fault Publicado por: amchacon en 3 Abril 2014, 02:13 am En las llamadas a función es mejor poner +1
Asi te quitas de ambiguedades y errores tontos. Además escribes lo mismo. |