Ayuda recursividad

Iniciado por JUHC, 28 Julio 2016, 11:25 AM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

Dejo los comentarios de que hace entre comillas, el codigo es del usuario do-while

#include<stdio.h>

int main(void) {
    char *s1 = "aaaabbbcccddddee";
    funcion(s1); //Mandamos la candena de s1 a la "funcion"
    return 0;
}

char funcion(char *s) //Se recive como parametro un apuntador a una Cadena X
{
    if(!(*s)) //Evaluamos si la posicion 0 de la cadena X "Actual" es 0, en caso de que lo sea se termina esta funcion por el return
        return *s;

    if(*s != funcion(s + 1)) //Enviamos la cadena actual a la funcion, pero... pero.. la enviamos apartir de la posicion 1, esto es la posicion 0 (Inicial) se omite  se manda la posicion 1 ejemplo si la cadena "Actual" es "ABCDE\0" se manda la funcion recursiva "BCDE\0"
        printf("%c",*s); //Y en el if evaluamos si el caracter en su posicion 0 y el caracter en su posision 1 son caracteres distintos entonces imprimimos el caracter actual

    return *s;
}

/*
Entontes la funcion dejara de llamarse a si misma cuando llegua al caracter nulo, apartir de ahi se imprimiran primero los ultimos caracteres llamados, esto es, la ultima funcion valida llamada tiene el ultimo caracter y ese es el primer printf que se ejecuta una vez que aplique el return se ejecutaran los printf de las funciones anteriores
*/



Y solo me queda comentar que el código proporcionado por el usuario do-while es, a mi punto de vista una verdadera pieza maestra!!!

Muestra un gran nivel del uso del lenguaje  ;-) ;-) ;-) ;-) ;-)

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW