Trouver une solution
boubou1987
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je cherche une proposition pour cet exercice
"Ecrire une fonction récursive qui determine si une chaine de caractères comporte plus de lettre "A" que de lettre "E"
je cherche une proposition pour cet exercice
"Ecrire une fonction récursive qui determine si une chaine de caractères comporte plus de lettre "A" que de lettre "E"
2 réponses
-
Bonjour,
Il faut que la fonction s'appelle d'elle-même ça permet de créer une boucle, proposition :int recure(char *chaine,int x) { if( *chaine == 'A' ) ++x; if( *chaine == 'E' ) --x; return *chaine?recure(++chaine,x):x; }
au départ x est à zéro, ça retourne un nombre négatif si il y a plus de E que de A et positif si il y a plus de A que de E, et 0 si il y a autant de A que de E-
Je suis d'accord avec ton code, il marche et l'algo est bon.
Cependant, je ne trouve pas ça très facile à comprendre, je propose donc une petite variante :
int recursive(char* chaine) { switch (chaine[0]) { case '\0': return 0; case 'A' : return recursive(chaine+1)+1; case 'E' : return recursive(chaine+1)-1; default : return recursive(chaine+1); } }
-
-
-
En C, cela fait suite à une discussion de ce matin (ici)
-