coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
13 juil. 2008 à 11:20
itek
Messages postés3Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention16 décembre 2008
-
16 déc. 2008 à 07:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
}
public BigInteger factoriel( BigInteger n) {
return factoriel(n, new BigInteger("1"));
}
/*
* This method enable to calculate a combinaison with n <= k
* C (n,k) = k! / (n!(k-n)!)
*/
public BigInteger combinaison(String n, String k){
BigInteger Bn = new BigInteger (n);
BigInteger Bk = new BigInteger (k);
return (factoriel(Bk).divide((factoriel(Bn).multiply((factoriel(Bk.subtract(Bn)))))));
}
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 14 juil. 2008 à 15:18
ah d'accord eh bien merci pour l'info !
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 14 juil. 2008 à 14:49
la mathode tail-rec, c'est celle que j'ai mise plus haut.
beaucoup de compilateurs s'occupent des fonctions tail-recursives pour les rendre iteratives, ce qui evite de faire exploser la pile.
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 14 juil. 2008 à 13:34
salut coucou747,
peux-tu me dire l'intérêt d'utiliser la méthode du "tail-récursive" par rapport à la récursivité pur ?
Chatbour
Messages postés71Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention12 juillet 200910 14 juil. 2008 à 11:15
Salut,
coucou747 -> tu peux donner un exemple sur la méthode tail-récursive ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 13 juil. 2008 à 11:20
salut
en vrai, t'as plusieurs facons de calculer n!, et le tien n'est pas particulierement interessant...
t'as l'exemple recursif pur (le tien)
l'exemple iteratif
et l'exemple tail-recursif (qui est deja plus interessant)
en java, t'as la chance d'avoir des methodes private, ce qui te permet de faire des methodes innaccessibles, donc de faire des methodes recursives "avec un premier appel different" on appelle ca un chapeau...
voici ce genre d'exemple en java :
class foo{
private int fact(int n, int acc){
if (n==0) return 1;
return fact(n-1, n*acc);
}
public int fact( int n) throws Exception{
if (n<0) throw new Exception("Oo");
return fact(n, 1);
}
}
16 déc. 2008 à 07:16
private BigInteger factoriel(BigInteger currentNumber, BigInteger sum) {
if(currentNumber.intValue()== 1) {
return sum;
} else {
return factoriel(currentNumber.subtract(new BigInteger("1")), sum.multiply(currentNumber));
}
}
public BigInteger factoriel( BigInteger n) {
return factoriel(n, new BigInteger("1"));
}
/*
* This method enable to calculate a combinaison with n <= k
* C (n,k) = k! / (n!(k-n)!)
*/
public BigInteger combinaison(String n, String k){
BigInteger Bn = new BigInteger (n);
BigInteger Bk = new BigInteger (k);
return (factoriel(Bk).divide((factoriel(Bn).multiply((factoriel(Bk.subtract(Bn)))))));
}
14 juil. 2008 à 15:18
14 juil. 2008 à 14:49
beaucoup de compilateurs s'occupent des fonctions tail-recursives pour les rendre iteratives, ce qui evite de faire exploser la pile.
14 juil. 2008 à 13:34
peux-tu me dire l'intérêt d'utiliser la méthode du "tail-récursive" par rapport à la récursivité pur ?
14 juil. 2008 à 11:15
coucou747 -> tu peux donner un exemple sur la méthode tail-récursive ?
13 juil. 2008 à 11:20
en vrai, t'as plusieurs facons de calculer n!, et le tien n'est pas particulierement interessant...
t'as l'exemple recursif pur (le tien)
l'exemple iteratif
et l'exemple tail-recursif (qui est deja plus interessant)
en java, t'as la chance d'avoir des methodes private, ce qui te permet de faire des methodes innaccessibles, donc de faire des methodes recursives "avec un premier appel different" on appelle ca un chapeau...
voici ce genre d'exemple en java :
class foo{
private int fact(int n, int acc){
if (n==0) return 1;
return fact(n-1, n*acc);
}
public int fact( int n) throws Exception{
if (n<0) throw new Exception("Oo");
return fact(n, 1);
}
}