Recursivité + boucles

kritical Messages postés 9 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 3 décembre 2005 - 1 déc. 2005 à 22:19
elmariami Messages postés 1 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 19 mars 2010 - 19 mars 2010 à 00:45
est ce que qq peut m'aider à m'initier aux fct recursifs
parsque j'ai une fonction qui s'appelle dans une boucle
void foction(n,i...)
for(i=0;i<n;i++)
{fonction2(x,y);
fonction1(n,i+1);}
des boucles vont se creer et je n'arrive pas à comprendre.
merci

6 réponses

dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
2 déc. 2005 à 09:15
Les fonctions récursive n'ont pas forcément besoin de boucle.
Une fonction récursive va s'appeler elle-même dans son code mais avec une valeur différente. Pour une fonction de puissance, tu peux faire un truc du genre :

float puiss(float x,int n) // x puissance n
{
// si la puissance dépasse 2, on ne peut pas calculer directement
// donc on rappel la fonction avec une puissance plus petite que
// l'on multiplie par x pour avoir le résultat
if(n<2) return puiss(x,n-1)*x;
// si la puissance vaut 2, c'est le carré donc x*x
else if(n==2) return x*x;
// sinon la puissance vaut 1 donc x puissance 1 = x
else return x;
}
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
2 déc. 2005 à 14:43
à dark_naruto25 :
pour la fonction puissance,
le 1er if, c'est (n > 2)

et tu peux te passer du dernier else
en mettant "return x;" sans le else

et il te manque x puissance 0.....

et un test dans le cas de puissance négative
0
kritical Messages postés 9 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 3 décembre 2005
2 déc. 2005 à 16:47
void foction(n,i)
{int j;
if (i==n)
afficher(un nombre);
else
for(j=i;j<n;j++)
{fonction2(i,j);
fonction1(n,i+1);
fonction2(i,j);}

merci mais je ne sais pas comment les boucles vont se creer
si qq peut me m'aider à comprendre en fonctio de i et j les etapes en supposant que n=3,merci
0
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
2 déc. 2005 à 23:32
Peut-être que ça serait mieux si tu nous disais ce que tu voulais
faire, parce que une fonction récursive avec une boucle dedans... c'est
rare je pense.



mogwai93>dsl je fais l'exemple en vitesse parce que j'étais en TP de programmation !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kritical Messages postés 9 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 3 décembre 2005
3 déc. 2005 à 17:17
c bon j'ai compris,merci
je confondais entre les boucles:
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
instruction}
je pensais que i et j s'incrémenté en même temps.
0
elmariami Messages postés 1 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 00:45
j ai besoin des exercices sur les fonctions recursive
0
Rejoignez-nous