2010-11-11 32 views
0

J'ai regardé autour d'essayer de trouver un algorithme de coefficient binomial simple, en vain. Le problème est que la langue que j'utilise pour la classe est un peu ... étrange. Une grande partie utilise Yacc et Lex.Coefficient binomial

Quoi qu'il en soit nous avons fait un exemple en classe:

n=12; p=1; i=1; 
while (i <= n) { 
     p = p * i; 
     print p; 
     i = i + 1; 
}; 

Ce fut un exemple de calcul factorielles, mais maintenant je dois modifier pour pouvoir calculer C (n, k) ou N choisir K (aka coefficient binomial), mais je ne suis pas si compliqué que je devrais le faire. Nous pouvons choisir n'importe quel N et K (l'utilisateur n'a pas besoin de les entrer) pour que n'importe quel 2 nombres aléatoires fonctionne (comme dans l'exemple ci-dessus). Je suis assez sûr que ce code ne supporte que des fonctions de base telles que les boucles while et les mathématiques de base, donc je ne pense pas que l'utilisation d'un factoriel est possible ... mais je suppose que je pourrais utiliser le code ci-dessus?

Des idées?

+2

Personne ne peut vous répondre avec certitude à 100% si la langue que vous utilisez est inconnu. –

+0

@Niki: ["L'étiquette de devoirs ... est maintenant déconseillée",] (http://meta.stackoverflow.com/q/10812) mais, @Mercfh, s'il vous plaît (comme toujours) suivez [les directives générales] (http : //tinyurl.com/so-hints): énoncez toutes les restrictions spéciales, montrez ce que vous avez essayé jusqu'à présent et posez des questions sur ce qui vous dérange plus particulièrement. –

+1

@Roger - merci pour l'info! –

Répondre

2

Puisque je suppose que c'est devoirs je ne vais pas fournir une solution. Ce que je vais dire est ceci:

Il existe une formule C (n, k) qui repose sur la division, la soustraction, la multiplication et factoriel:

n!/(k!(n-k)!) 

Vous avez déjà un code qui permet de calculer le factoriel, et il semble que la langue que vous utilisez supporte les autres opérateurs mathématiques dont vous avez besoin. Il suffit donc de calculer trois factoriels: un pour n, un pour k et un pour n-k.

+1

Cela a du sens, et ce n'est pas vraiment un devoir, mais c'est un exemple d '«exercice» de la classe. –