Explication en c++
Fermé
eric
-
20 juil. 2004 à 18:24
Kermitt31 Messages postés 3669 Date d'inscription jeudi 15 juillet 2004 Statut Contributeur Dernière intervention 8 août 2006 - 21 juil. 2004 à 10:26
Kermitt31 Messages postés 3669 Date d'inscription jeudi 15 juillet 2004 Statut Contributeur Dernière intervention 8 août 2006 - 21 juil. 2004 à 10:26
9 réponses
Kermitt31
Messages postés
3669
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006
497
20 juil. 2004 à 18:37
20 juil. 2004 à 18:37
c cela !
Mais par contre dans le if tu devrais mettre plutot
if(n>=0 && n<=1) car que va tu renvoyer pour la factorielle de 0 ???
Mais par contre dans le if tu devrais mettre plutot
if(n>=0 && n<=1) car que va tu renvoyer pour la factorielle de 0 ???
dans ton code tu doit definir le cas ou n=0
par convention 0! = 1
tu doit le préciser dans ton code!
DURALEX SED LEX
par convention 0! = 1
tu doit le préciser dans ton code!
DURALEX SED LEX
eric17m
Messages postés
15
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
28 mars 2005
20 juil. 2004 à 18:55
20 juil. 2004 à 18:55
je te remerci bcps, @+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eric17m
Messages postés
15
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
28 mars 2005
20 juil. 2004 à 19:00
20 juil. 2004 à 19:00
pkoi faut il renvoyer la factorielle à 0.!!
Bonjour
tu as compris mais j'ai preferé que tu ecrivais
5 ! = 5*4 !
4 ! = 4*3 !
3 ! = 3*2 !
2 ! = 2*1 !
1!=1
lorsque le compilateur arrive au stade ou le calul est final càd 1 ! dans ce cas le calul n'est pas dependant de la fonction factoriel elle meme là il s'arrete pour remonter clculer 2 ! puis 3 ! etc...
aussi il faut faire attention au depassement de capacité OverFlow
tu as compris mais j'ai preferé que tu ecrivais
5 ! = 5*4 !
4 ! = 4*3 !
3 ! = 3*2 !
2 ! = 2*1 !
1!=1
lorsque le compilateur arrive au stade ou le calul est final càd 1 ! dans ce cas le calul n'est pas dependant de la fonction factoriel elle meme là il s'arrete pour remonter clculer 2 ! puis 3 ! etc...
aussi il faut faire attention au depassement de capacité OverFlow
Kermitt31
Messages postés
3669
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006
497
21 juil. 2004 à 09:19
21 juil. 2004 à 09:19
Must41 a tout a fait raison !
Pour le bout de code du if que je t'ai dit de changer c'est effectivement pour renvoyer factorille 0 si il y a besoin qui par convention vaut 1.
D'ailleurs il faudrait mieux faire un truc du style
int factorielle ( int n )
{
if (n>=0)
{
if ( n<=1)
return 1;
else
return (n * factoriel ( n -1) ) ;
}
else
return -1; //erreur car la factorielle d'un nombre negatif n'est pas definie
}
Pour le bout de code du if que je t'ai dit de changer c'est effectivement pour renvoyer factorille 0 si il y a besoin qui par convention vaut 1.
D'ailleurs il faudrait mieux faire un truc du style
int factorielle ( int n )
{
if (n>=0)
{
if ( n<=1)
return 1;
else
return (n * factoriel ( n -1) ) ;
}
else
return -1; //erreur car la factorielle d'un nombre negatif n'est pas definie
}
salut, si tu compiles, fais attention car une fois tu écris factorielle et une autre fois tu écris factoriel
attention à ce que n ne soit pas négatif.
Must41 a parlé d'overflow.
Amuse toi à calculer factorielle(100) de manière récursive puis itérative. Regarde le temps de calcul et la mémoire utilisée.
Si tu veux t'entrainer sur les fonctions récursives, code la fonction puissance (dans un 1e temps puissance ou l'exposant est un nombre entier).
Pom
attention à ce que n ne soit pas négatif.
Must41 a parlé d'overflow.
Amuse toi à calculer factorielle(100) de manière récursive puis itérative. Regarde le temps de calcul et la mémoire utilisée.
Si tu veux t'entrainer sur les fonctions récursives, code la fonction puissance (dans un 1e temps puissance ou l'exposant est un nombre entier).
Pom
Kermitt31
Messages postés
3669
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006
497
21 juil. 2004 à 10:26
21 juil. 2004 à 10:26
Après tu peux trouver plein d'exmples sur le web...
20 juil. 2004 à 19:14
if (n==0 || n== 1) car les valeur de n sont des entiers, mais ca revient au même.
DURALEX SED LEX