cs_cabarrus
Messages postés16Date d'inscriptionmardi 25 juin 2002StatutMembreDernière intervention12 janvier 2003
-
14 sept. 2002 à 21:42
dleewax
Messages postés6Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention14 juin 2003
-
13 mars 2003 à 17:11
salut je veux écrire un programme qui calcule et renvoie le résultat factorielle en utilisant la récursivité de n'importe qu'elle nombre entier voici ce que moi j'ai écrit:
#include
int factorielle(int valeur)
{
if (valeur==1)
return(1);
else return(valeur*factorielle(valeur-1))
}
void main(void)
{
int valeur;
std::cout<<"donner votre valeur en entier:\n";
std::cin>>valeur;
for (valeur=1;valeur<=valeur;valeur++)
printf("la factorielle de %d est %d\n",valeur,factorielle(valeur));
}
TheRod23
Messages postés69Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention15 mars 2004 16 sept. 2002 à 09:47
Salut
dans ton calcul tu a oublié que factorielle de 0 c'est un ton test devrait etre
int factorielle(int Valeur)
{
if(Valeur < 0)
Valeur = -Valeur; // pour eviter une recursivité infinie
if(!Valeur)
return 1;
else
return Valeur * factorielle(Valeur - 1);
}
ta boucle est infini puisque tu initialise ta variable valeur avec un nombre fournie par un utilisateur mais dans ta boucle tu l'as remet a zero donc tu perds la sa valeur et de plus ton test ne sert a rien puis Valeur sera toujours egale a Valeur
Voila ce que tu arrais du taper
void main()
{
int valeur = 0;
int i;
std::cout<<"donner votre valeur en entier:\n";
std::cin>>valeur;
for(i = 0;i <= Valeur; i++)
{
printf("La factorielle de %d est %d\n",i,factorielle(i));
}
}