Problem d'une fonction recursive
marytahri
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Phortitou Messages postés 231 Statut Membre -
Phortitou Messages postés 231 Statut Membre -
Bonjour,
j ai un probleme d'informatique s il vous plait aidez moi si c'est possible.
ecrivez une fonction puissance recursive qui calcule XpuissanceN pourX flottant quelconque et N entier positif ou nul. mettez à profit la remarque:
1,sin=0
X*Xpuis(N-1) si N est impair;
Xcarré puis N/2 si N est pair N/2 est entier
j ai un probleme d'informatique s il vous plait aidez moi si c'est possible.
ecrivez une fonction puissance recursive qui calcule XpuissanceN pourX flottant quelconque et N entier positif ou nul. mettez à profit la remarque:
1,sin=0
X*Xpuis(N-1) si N est impair;
Xcarré puis N/2 si N est pair N/2 est entier
Configuration: Windows XP Internet Explorer 7.0
13 réponses
-
-
-
float puissance(float x, int n)
{
if(n>0)
return x*puissance(x, n-1);
else
return 1;
}
Pour les remarques c'est pas trop clair -
D'abord, vérifie si le nombre N est pair ou impair, puis fait une boucle qui multiplie N fois X avec lui-même
double puis(int N, double X) {
if(N == 1) {
return X;
} else {
if(N%2 != 0) {
for(i < N) {
X = X*puis(N-1,X);
}
} else {
for(i < N) {
X = X*X*puis(N/2,X);
}
}
}
Je l'imagine un peu comme ça. Fais pas attention à la syntaxe et il y a surement des fautes, j'ai fait ça en vitesse selon ce que j'avais en tête. Si c'est pas ce que tu veux, fais signe et j'y reréfléchirai. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
merci bcp c est tres gentil
-
si vous donniez un exemple simple, ça serait plus facile à comprendre.
par exp n = 5 puis n =4
décrivez les étapes pour chaque cas -
Mmmh... en fait j'ai mis les boucle parce que j'ai oublié que c'était la récursivité. Enlève les boucles for! Essaie plutot ceci:
double puis(int N, double X) {
if(N == 1) {
return X;
} else {
if(N%2 != 0) {
X = X*puis(N-1,X);
} else {
X = X*X*puis(N/2,X);
}
} -
ok merci je vais essaie
-
Bon si on veut à chaque itération diminuer n de 1 pour le cas impair et de la moitié dans le cas pair, je pense que c'est comme ça.:
double puissance(int N, double X) {
if(N == 1)
{
return X;
}
else if(N%2 != 0)
{
return X*puissance(N-1,X);
}
else
{
return X*puissance(N/2,X);
}
} -
Euh... quand N est pair, on doit faire (X*X)puissance(N/2) ?
Dans ce cas il faut modifier:
} else {
X = X*X*puis(N/2,X);
}
par:
} else {
X = puis(N/2,X*X);
}
-
oui je suis d’accord, en fait l'énoncé n'est pas assez clair
-
merci bcp phortitou
pouvez-vous me rendre ce programme en pointeur si tu as du temps bien sure s il vous plait -
En pointeur? Tu veux pouvoir donner une variable en paramètre et qu'elle soit modifiée par le programme?