Dénombrement en Python
Compléter le programme Python ci-dessous de telle sorte que la fonction factorielle retourne où désigne un entier naturel passé en argument.
def factorielle(n) : f = ... for i in range(...) : f = ... return ...
Sur le modèle de la question précédente, écrire une fonction arrangement qui prend en arguments deux entiers naturels et et qui retourne le nombre de -uplets formés d'éléments distincts d'un ensemble à éléments.
Écrire une fonction Python qui prend en arguments deux entiers naturels et et qui retourne le nombre de combinaisons .
On pourra faire appel aux fonctions définies dans les questions précédentes.
Corrigé
On utilise la définition de :
(voir Factorielle et permutations )
Le programme Python peut être compléter de la façon suivante :
def factorielle(n) : f = 1 for i in range(1, n+1) : f = f * i return f
Remarque : On rappelle que l'instruction for i in range(1, n+1) effectue une boucle pour i variant de 1 à n.
Le nombre de p-uplets formés de p éléments distincts d'un ensemble à éléments est :
(voir p-uplets formés de p éléments distincts - Arrangements)
La fonction arrangement sera donc assez similaire à la fonction factorielle :
def arrangement (n, p) : a = 1 for i in range(n-p+1, n+1) : a = a * i return a
En utilisant les fonctions définies dans les questions précédentes et le fait que :
(voir Combinaisons)
on obtient la fonction Python :
def combinaison (n, p) : return arrangement(n,p)//factorielle(p)
Remarque : L'opérateur // effectue la division entière alors que l'opérateur / (acceptable ici aussi) effectue la division décimale.