Récursivité et factorielle!!!

Signaler
Messages postés
16
Date d'inscription
mardi 25 juin 2002
Statut
Membre
Dernière intervention
12 janvier 2003
-
Messages postés
6
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
14 juin 2003
-
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

Messages postés
69
Date d'inscription
dimanche 15 octobre 2000
Statut
Membre
Dernière intervention
15 mars 2004

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
Messages postés
6
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
14 juin 2003

voila j'ai trouvé une réponse assez simple...
il suffit de mettre long long int comme type de variable...