Calcul de la factorielle d'un nombre n

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 723 fois - Téléchargée 31 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
garslouche
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015
1
2 juin 2004 à 19:42
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 ...
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
2 juin 2004 à 13:32
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!.
cs_cyril21
Messages postés
1
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
2 juin 2004

2 juin 2004 à 12:18
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))
garslouche
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015
1
25 nov. 2003 à 18:24
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.
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
25 nov. 2003 à 17:23
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.