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
A voir également:
- Problem d'une fonction recursive
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
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
{
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.
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
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
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);
}
}
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);
}
}
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);
}
}
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);
}
Dans ce cas il faut modifier:
} else {
X = X*X*puis(N/2,X);
}
par:
} else {
X = puis(N/2,X*X);
}