Trouver une solution

Fermé
boubou1987 - 23 avril 2011 à 12:38
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 23 avril 2011 à 23:44
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"


A voir également:

2 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 23/04/2011 à 19:30
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
1
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
23 avril 2011 à 19:48
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);
	}
}
0
AmeniOV Messages postés 90 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 28 mai 2012 4
23 avril 2011 à 23:02
quel language??
=)
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
23 avril 2011 à 23:44
En C, cela fait suite à une discussion de ce matin (ici)
0