Probléme de Récursivité
Fermé
GKA
Messages postés
341
Date d'inscription
vendredi 17 août 2007
Statut
Membre
Dernière intervention
3 août 2012
-
20 nov. 2008 à 22:07
amie - 21 nov. 2008 à 22:56
amie - 21 nov. 2008 à 22:56
5 réponses
GKA
Messages postés
341
Date d'inscription
vendredi 17 août 2007
Statut
Membre
Dernière intervention
3 août 2012
77
20 nov. 2008 à 22:23
20 nov. 2008 à 22:23
Hey mec, si j'avais une simple idée je ne poste pas ce sujet, mais je ss vraiment incapable de trouver la solution sauf en l'algorithme classique (sans récursivité). On plus les professeurs nous disent que pour trouver une solution récursive il faut chercher l'élément récursif (qui diminue ou augmente), exprimer la solution dans le cas général qui contient des appels récursifs et aprés trouver les conditions d'arrêt pour que le programme ne tourne pas dans une boucle fermée
Droopy_
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
25
20 nov. 2008 à 22:48
20 nov. 2008 à 22:48
On va te mettre sur la voie.
Le résultat que tu cherches, c'est :
Si le premier caractère de ta chaine est le caractère que tu cherches,
tu fais 1 + le nombre de caractères dans le reste de la chaine,
sinon, c'est le nombre de caractères dans le reste de la chaine.
Tu crées donc une fonction qui va s'appeler elle-même (récursive) avec une chaine de plus en plus petite.
quand la chaine est vide, c'est fini.
Le résultat que tu cherches, c'est :
Si le premier caractère de ta chaine est le caractère que tu cherches,
tu fais 1 + le nombre de caractères dans le reste de la chaine,
sinon, c'est le nombre de caractères dans le reste de la chaine.
Tu crées donc une fonction qui va s'appeler elle-même (récursive) avec une chaine de plus en plus petite.
quand la chaine est vide, c'est fini.
thomas87b
Messages postés
275
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
23 octobre 2020
64
20 nov. 2008 à 22:49
20 nov. 2008 à 22:49
Je ne connais pas le Pascal, mais voici un code en Python que tu pourrais adapter qui fait ce que tu demandes :
chn=raw_input("Chaine : ") #Demande a l'utilisateur d'entrer la chaine a analyser et l'enregistre dans chn ca=" " #Defini de caractere a compter (ici un espace) n=0 #Initialise le compteur nn=0 #Initialise la variable de recursivite while nn<=len(chn)-1: #Tant que nn<(nombre de caracteres de la chaine)-1 (Le premier caractere etant le numero 0) if chn[nn]==ca: #Si le caractere nn est celui enregistre dans ca n=n+1 #On ajoute 1 au compteur nn=nn+1 #On ajoute 1 au compteur de recursivite print n #On affiche le nombre de fois que le caractere apparait dans la chaine
Droopy_
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
25
20 nov. 2008 à 22:51
20 nov. 2008 à 22:51
C'est pas récursif, ça !!!
GKA
Messages postés
341
Date d'inscription
vendredi 17 août 2007
Statut
Membre
Dernière intervention
3 août 2012
77
20 nov. 2008 à 22:52
20 nov. 2008 à 22:52
Merci thomas87b mais dans un traitement recursif on doit pas utiliser des boucle (tant que, répéter jusqu'a ou pour i faire ...)
thomas87b
Messages postés
275
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
23 octobre 2020
64
20 nov. 2008 à 22:54
20 nov. 2008 à 22:54
Oui, récursivité, j'ai pensé boucle.
Désolé, je me suis rendu compte de mon erreur en lisant le message de Droopy_.
Désolé, je me suis rendu compte de mon erreur en lisant le message de Droopy_.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour GKA
je pense que ce programme repend à ta question
cordialement
je pense que ce programme repend à ta question
program recurs; uses Strings,crt; var chaine:string; c:char; x,a:integer; function app_car(c:char;var chaine:string):integer; var car:char; long:integer; begin long:=length(chaine); car:=chaine[long]; chaine:=copy(chaine,1,length(chaine)-1); if long=0 then begin app_car:=a; exit; end; if car=c then a:=a+1; app_car:=app_car(c,chaine); end; begin clrscr; write('entrez la chaine: '); readln(chaine); write('entrez le caractere que vous voulez: '); readln(c); a:=0; x:=app_car(c,chaine); write('le nombre d"apparition du caractere ',c,' dans votre chaine est: ',x); readkey; end.
cordialement
GKA
Messages postés
341
Date d'inscription
vendredi 17 août 2007
Statut
Membre
Dernière intervention
3 août 2012
77
21 nov. 2008 à 21:15
21 nov. 2008 à 21:15
Merci bien amie la solution etait parfaite, c'est ca le vrai traitement récursif
amie
>
GKA
Messages postés
341
Date d'inscription
vendredi 17 août 2007
Statut
Membre
Dernière intervention
3 août 2012
21 nov. 2008 à 22:56
21 nov. 2008 à 22:56
de rien GKA
si t'a pas compris quelque chose poses tes questions sinon il faut mettre statut:resolu
cordialement
si t'a pas compris quelque chose poses tes questions sinon il faut mettre statut:resolu
cordialement