Función recursiva para imprimir cadenas
Tengo el siguiente código:
#incluir <stdio.h>
void recursividad(char ptr) {
if(ptr!=’J’) recursividad(ptr++);
printf(“%c”,*ptr);
}
void main() {
char v[]=”!zenaJ”;
char *ptr=v;
recursividad(ptr);
}
Me gustaría devolver Janez! a través de la función recursiva. No tengo errores al compilar. Cuando ejecuto el programa obtengo un error “Segmentation fault (core dumped)”. ¿Qué estoy haciendo mal?
davy.ai
El problema en el código se encuentra en el operador de post-incremento utilizado en la llamada recursiva. En la línea “recursion (ptr++)”, el operador de post-incremento incrementa el puntero después de que ha sido utilizado en la llamada a la función, y el nuevo puntero apunta a una ubicación de memoria que puede no ser accesible. Esto conduce a un error de violación de segmento.
Para solucionarlo, podemos usar el operador de pre-incremento en lugar del operador de post-incremento en la llamada recursiva. El código actualizado será:
Este código mostrará “Janez!” como se esperaba. Tenga en cuenta que la función principal devuelve un valor entero y debe tener una declaración de retorno.</stdio.h>