Fonction récursive (C)
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Fonction récursive (C)



  1. #1
    theodutt

    Fonction récursive (C)


    ------

    Bonsoir;
    J'ai un exercice d'entrainent sur les fonctions récursives où le but est d'afficher le nombre de fois qu'un caractère apparaît dans une chaine donnée.

    J'ai faits une procédure permettant cela (qui marche) mais je ne suis pas sûr que ce soit une vraie récursivité (proprement faite).

    Voici le code :
    Code:
    #include <stdio.h>
    
    void oc(char chaine[100], char caract, int nb, int *ptr_n)
    {
    	if(*ptr_n<100)
    	{
    		if(chaine[*ptr_n] == caract)
    		{
    			++nb;	
    		}
    		*ptr_n += 1;
    
    		oc(chaine, caract, nb, ptr_n);
    
    	}else
    	{
    		printf("Il y a %d %c dans la chaine\n", nb, caract);
    	}
    }
    
    int main()
    {
    	int n = 0;
    	char chaine[100], caract;
    
    	printf("Entrez une chaine : \n");
    	scanf("%s", chaine);
    	getchar();
    	printf("Entrez un caractère : \n");
    	scanf("%c", &caract);
    
    	oc(chaine, caract, 0, &n);
    	
    	return 0;
    }
    merci d'avance

    -----

  2. #2
    Tryss2

    Re : Fonction récursive (C)

    Quelle drôle d'idée d'utiliser une fonction récursive pour ce genre de choses (pour ne pas utiliser d'autres qualificatifs moins élogieux). Mais bon, la consigne c'est la consigne.

    Et effectivement, ce que tu as fait n'est super élégant

    Voila comment je l'aurai fait :

    Code:
    int charCount(char * string, char c)
    {
        int i = 0;
        if (string[0] == '\0')
        {
            return 0;
        }
        if (string[0] == c)
        {
            i=1;
        }
        return charCount(string+1, c) + i;
    }

    Et j'espère que l'on me pardonnera, mais je ne peux pas résister à une version golfée du même algorithme (à conserver hors de portée des personnes sensibles ):
     Cliquez pour afficher

  3. #3
    theodutt

    Thumbs up Re : Fonction récursive (C)

    Ok merci, effectivement c'est mieux

  4. #4
    whoami

    Re : Fonction récursive (C)

    Bonjour,
    Citation Envoyé par Tryss2 Voir le message
    Quelle drôle d'idée d'utiliser une fonction récursive pour ce genre de choses (pour ne pas utiliser d'autres qualificatifs moins élogieux). Mais bon, la consigne c'est la consigne.

    Et effectivement, ce que tu as fait n'est super élégant
    Et paf, un exercice résolu par l'aide, ce qui n'est pas le but du forum.

  5. A voir en vidéo sur Futura
  6. #5
    Tryss2

    Re : Fonction récursive (C)

    Sa fonction initiale est déjà une fonction récursive qui respecte la consigne : l'exercice était déjà résolu.

    D'une façon complètement horrible, oui, mais résolu quand même.

Discussions similaires

  1. Fonction récursive VB.net
    Par KKG689 dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 13/05/2018, 19h22
  2. fonction récursive
    Par bastinoute dans le forum Mathématiques du collège et du lycée
    Réponses: 20
    Dernier message: 22/09/2013, 12h45
  3. fonction primitive-récursive
    Par invite56460777 dans le forum Mathématiques du supérieur
    Réponses: 16
    Dernier message: 06/06/2009, 04h30
  4. fonction partielle partiellement récursive
    Par invitef87a0c6b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 15/03/2008, 10h37
  5. fonction recursive
    Par hterrolle dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 23/05/2006, 17h24