OVH Cloud OVH Cloud

Fonction Factorielle

4 réponses
Avatar
dperetti
existe il une fonction factorielle en c++ toute faite
style.... long fact (long )
merci

4 réponses

Avatar
Rémy
"dperetti" a écrit dans le message de
news:buolf5$98g$
existe il une fonction factorielle en c++ toute faite
style.... long fact (long )
merci




long fact(long n)
{
long result=1;
for (,n>0,n--)
{
result = result * n;
}
return result;
}

Évidemment, dès que n est un peu grand, ça va déborder...

Avatar
Benoit Dejean
Le Thu, 22 Jan 2004 15:29:16 +0100, Rémy a écrit :


"dperetti" a écrit dans le message de
news:buolf5$98g$
existe il une fonction factorielle en c++ toute faite
style.... long fact (long )
merci




long fact(long n)
{
long result=1;
for (,n>0,n--)


n>1 suffit

avec des ; c'est mieux

{
result = result * n;


soyons avares

result *=n;

}
return result;
}



Avatar
kanze
"dperetti" wrote in message
news:<buolf5$98g$...

existe il une fonction factorielle en c++ toute faite style.... long
fact (long )


En C++ standard, non, mais Posix a une fonction lgamma qui peut servir :

double
fact( int n )
{
return exp( lgamma( n + 1.0 ) ) ;
}

Sinon, il y a toujours la classique :

double
fact( int n )
{
return n > 1 ? n * fact( n - 1 ) : 1.0 ;
}

Avec un type de retour de long, on est limité a n <= 20 ; l'utilisation
d'un double nous permet jusqu'à n <= 170. Sur ma machine, au moins. Et a
priori (mais je ne suis pas spécialisé dans les calculs numériques),
j'imagine que la première version est plus précise. (Les résultats
diffèrent dès le douzième chiffre chez moi.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Avatar
dperetti
"dperetti" a écrit dans le message news:
buolf5$98g$
existe il une fonction factorielle en c++ toute faite
style.... long fact (long )
merci

merci pour vos reponse a tous (je cherchais pour n <70)