Problem d'une fonction recursive
Fermé
marytahri
Messages postés
8
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
-
11 déc. 2008 à 21:42
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 - 12 déc. 2008 à 08:28
Phortitou Messages postés 221 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 4 décembre 2011 - 12 déc. 2008 à 08:28
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 moyenne excel - Guide
- Fonction miroir - Guide
- Fonction somme excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
13 réponses
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
11 déc. 2008 à 22:29
11 déc. 2008 à 22:29
avec quel langage???
marytahri
Messages postés
8
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
11 déc. 2008 à 22:30
11 déc. 2008 à 22:30
language c
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
11 déc. 2008 à 22:35
11 déc. 2008 à 22:35
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
Phortitou
Messages postés
221
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
4 décembre 2011
27
11 déc. 2008 à 22:36
11 déc. 2008 à 22:36
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
marytahri
Messages postés
8
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
11 déc. 2008 à 22:41
11 déc. 2008 à 22:41
merci bcp c est tres gentil
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
11 déc. 2008 à 22:42
11 déc. 2008 à 22:42
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
Phortitou
Messages postés
221
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
4 décembre 2011
27
11 déc. 2008 à 22:43
11 déc. 2008 à 22:43
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);
}
}
marytahri
Messages postés
8
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
11 déc. 2008 à 22:45
11 déc. 2008 à 22:45
ok merci je vais essaie
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
11 déc. 2008 à 22:49
11 déc. 2008 à 22:49
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);
}
}
Phortitou
Messages postés
221
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
4 décembre 2011
27
11 déc. 2008 à 22:51
11 déc. 2008 à 22:51
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);
}
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
11 déc. 2008 à 22:56
11 déc. 2008 à 22:56
oui je suis d’accord, en fait l'énoncé n'est pas assez clair
marytahri
Messages postés
8
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
11 déc. 2008 à 22:56
11 déc. 2008 à 22:56
merci bcp phortitou
pouvez-vous me rendre ce programme en pointeur si tu as du temps bien sure s il vous plait
pouvez-vous me rendre ce programme en pointeur si tu as du temps bien sure s il vous plait
Phortitou
Messages postés
221
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
4 décembre 2011
27
12 déc. 2008 à 08:28
12 déc. 2008 à 08:28
En pointeur? Tu veux pouvoir donner une variable en paramètre et qu'elle soit modifiée par le programme?