Calculer l'exponentiel par récursivité
Résolu
ley100
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
DemontePneus -
DemontePneus -
Bonjour,
S'il vous plaît, j'aimerais bien connaitre l'erreur(s) qui existe dans cette algorithme.
A titre d'information: cet algorithme a pour but de calculer l'exponentiel par méthode de récursivité.
MERCI pour votre aide.
S'il vous plaît, j'aimerais bien connaitre l'erreur(s) qui existe dans cette algorithme.
A titre d'information: cet algorithme a pour but de calculer l'exponentiel par méthode de récursivité.
#include <stdio.h> #include <stdlib.h> #include <math.h> int factoriel(int n, int i, int fact) { if(i=n+1) { fact=1; return fact; } else { fact = fact*i; i++; factoriel(n,i,fact); } } float puissance(int n, int i, float x, float p) { if(i=n+1) { p=1; return p; } else { p=p*x; i++; puissance(n,i,x,p); } } int main() { const float EPS=0.0001; int i, n, fact; float x,p,s,T; printf("Donner x: "); scanf("%f", &x); n=0; T=1; s=0; fact=1; p=1; while(floor(T) > EPS) { T=puissance(n,1,x,p)/factoriel(n, 1, fact); s=s+T; n=n+1; } printf("Exp(%f) = %f\n", x, s); }
MERCI pour votre aide.
A voir également:
- Exponentielle calculatrice ti college plus
- Comment debloquer la tablette du collège - Forum Windows 10
- Comment éteindre une calculatrice ti collège plus - Forum Matériel & Système
- Calculatrice gratuit - Télécharger - Calcul & Conversion
- Ti college plus solaire ne s'allume plus ✓ - Forum Matériel & Système
- Ti college plus log - Forum calculatrices
5 réponses
Bonjour
Plusieurs erreurs.
Je passe sur l'absurdité d'utiliser la récursivité pour calculer la factorielle et la puissance, je suppose qu'on te le demande.
D'abord, détail de syntaxe ultra classique : le test c'est ==, pas =. Dans tes deux fonctions il faut if(i==n+1)
Plus grave, dans le else de test deux fonctions, il n'y a pas de return. Donc ta fonction ne renvoie rien, elle peut prendre une valeur aléatoire. Je suppose que l'idée était, pour la première d'avoir return factoriel(n,i,fact);
Mais même avec cette correction, Tes factorielle et puissance ne vont pas marcher. Tu fais de beaux calculs, puis, rendu à l'étage n+1, tu forces le résultat à 1 !
Enfin, dans ton main, il faut réinitailiser p et fact à chaque boucle.
A mon avis, il vaut mieux écrire les fonctions factorielle et puissance pour travailler par valeurs décroissantes (de n à 1) plutôt que de croissantes de 1 à n+1. La fonction n'a plus besoin que d'un seul paramètre, c'est beaucoup plus simple (pas de i, de fact, ni de p)
Plusieurs erreurs.
Je passe sur l'absurdité d'utiliser la récursivité pour calculer la factorielle et la puissance, je suppose qu'on te le demande.
D'abord, détail de syntaxe ultra classique : le test c'est ==, pas =. Dans tes deux fonctions il faut if(i==n+1)
Plus grave, dans le else de test deux fonctions, il n'y a pas de return. Donc ta fonction ne renvoie rien, elle peut prendre une valeur aléatoire. Je suppose que l'idée était, pour la première d'avoir return factoriel(n,i,fact);
Mais même avec cette correction, Tes factorielle et puissance ne vont pas marcher. Tu fais de beaux calculs, puis, rendu à l'étage n+1, tu forces le résultat à 1 !
Enfin, dans ton main, il faut réinitailiser p et fact à chaque boucle.
A mon avis, il vaut mieux écrire les fonctions factorielle et puissance pour travailler par valeurs décroissantes (de n à 1) plutôt que de croissantes de 1 à n+1. La fonction n'a plus besoin que d'un seul paramètre, c'est beaucoup plus simple (pas de i, de fact, ni de p)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question