Récursivité et factorielle!!!

cs_cabarrus Messages postés 16 Date d'inscription mardi 25 juin 2002 Statut Membre Dernière intervention 12 janvier 2003 - 14 sept. 2002 à 21:42
dleewax Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 14 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));
}

rhumsek :sleepy)

2 réponses

TheRod23 Messages postés 69 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 15 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));
}
}

Bon code
TheRod23
0
dleewax Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 14 juin 2003
13 mars 2003 à 17:11
voila j'ai trouvé une réponse assez simple...
il suffit de mettre long long int comme type de variable...
0
Rejoignez-nous