Trouver une solution

boubou1987 -  
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"

2 réponses

  1. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
     
    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
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
  2. AmeniOV Messages postés 103 Statut Membre 4
     
    quel language??
    =)
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      En C, cela fait suite à une discussion de ce matin (ici)
      0