Calcul de la factorielle d'un nombre n

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 065 fois - Téléchargée 29 fois

Contenu du snippet

Bah ici on a une fonction qui en entrée recoit un nmbre N et qui en sotie en renvoie la factorielle. le type double est necessaire car pr de rand nombres le type int peut ne pas suffire sur certaines machines

Source / Exemple :


double factoriel (int N)
{
  if (!N) return 1; //si N=0 alors on renvoie 1 car 0!=1
  return N*Factoriel(N-1);
}

Conclusion :


voia le prgramme fait appel a lui mm, c la methode recursive, ca marche pas tout le tps mais je c k'avec cette fontion ca marche nickel donc si vs avez des commetns n'hesitez pas

A voir également

Ajouter un commentaire

Commentaires

Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

cyril21 : la formule est correcte mais ça reste une approximation et surtout la complexité est bien supérieure à celle de cette fonction! Sais-tu comment un ordi calcule une racine carrée ?... si ça t'interesse regarde dans mes sources : "Math.h reprogrammé"

La complexité informatique ne se mesure pas au nombre de lignes ...
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Oui je crois que c'est la formule de Stirling :
n _______
n! ~ (n/e) * \/ 2.pi.n

ceci est une approximation du meme ordre de grandeur que n!.
Messages postés
1
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
2 juin 2004

Pour des factorielles supérieurs à 20, j'utilise la formule suivante dont la précision me semble correcte et qui est beaucoup plus rapide car une seule ligne.
x! = Sqr(2 * x * Pi) * (x / E) ^ x
avec Const Pi 3.14159265358979, E2,71828182845905 (correspond à exp(1))
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

je ne suis pas d'accord avec toi JCDjcd.
Car ces pb interviennent pour les très grands nombres. On n'y cherche pas forcément la précision. D'autant plus que les factorielles élevées sont des multiples de puissances de 10, donc ce sont les premiers chiffres qui comptent finalement.
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Cette fonction m'est familiere, j'en est deja fais une ... mais bon.

C'est pas genant d'avoir des double des des int, ily a des probleme de cast. Ici le double n'est pas justifier, car meme s'il peut aller jusqu'a des nomre a exposant, il n'a pas une nombre infini de decimal.
Donc le mieux est de faire un unsigned __int64
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.