BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
28 mars 2010 à 13:58
munstef676
Messages postés5Date d'inscriptiondimanche 1 juin 2014StatutMembreDernière intervention14 avril 2024
-
1 juin 2014 à 02:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
un algorithme du calcul du binomial plus efficace et rapide :
C++ :
template<typename T> T binomial(T& n, T& p) {
if ((n < 0) || (p < 0) || (p > n)) return 0;
T imax = (p > n / 2) ? n - p : n;
T n1 = n + 1;
T result = 1;
for(T i=1; i <= imax; ++i) result *= (n1 - i) / i;
return result;
}
C : pour les entiers :
unsigned binomial(unsigned n, unsigned p) {
if (p > n) return 0;
unsigned imax = (p > n / 2) ? n - p : n;
unsigned n1 = n + 1;
unsigned result = 1;
for (unsigned i = 1; i <= imax; ++i) result *= (n1 - i) / i;
return result;
}
ce code est facilement modifiable si l'on veut utiliser avec d'autre type entier, et renvoyer la valeur en un autre entier ou flottant
Message édité : Ajout des balises de code.
Tearsofdestiny
Messages postés2Date d'inscriptionjeudi 11 juin 2009StatutMembreDernière intervention11 novembre 2009 29 mars 2010 à 09:35
Bonjour,
Merci de faire cette remarque que je vais naturellement prendre en compte. Je dois avouer que j'y ai pensé, mais j'ai ensuite oublié.
Seulement protos et déclarations dans les *.h, jamais de code.
long int fact(long int a)
{
long int res = 1, i;
for(i = 0; i <= a; i++) {
if(i != 0 && i != 1) res = res * i;
else res = res;
}
return res;
}
res = res; // SUPER UTILE !!!
Puisque tu ne veux rien avant la valeur 2:
long int fact(long int a)
{
long int res = 1;
while(a >= 2) res *= a--;
return res;
}
Modifié par jordane45 le 1/06/2014 à 02:45
C++ :
C : pour les entiers :
ce code est facilement modifiable si l'on veut utiliser avec d'autre type entier, et renvoyer la valeur en un autre entier ou flottant
Message édité : Ajout des balises de code.
29 mars 2010 à 09:35
Merci de faire cette remarque que je vais naturellement prendre en compte. Je dois avouer que j'y ai pensé, mais j'ai ensuite oublié.
Encore merci
P.S: n'hésitez pas a critiquer aussi :-)
Modifié par jordane45 le 1/06/2014 à 02:46
Puisque tu ne veux rien avant la valeur 2:
Message édité : Ajout des balises de code.