Trouver une solution

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"

2 réponses

  1. 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. Modérateur
      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);
      	}
      }