Coefficient binomial python
import math
x = int(input("Enter a value for x: "))
y = int(input("Enter a value for y: "))
if y == 1 or y == x:
print(1)
if y > x:
print(0)
else:
a = math.factorial(x)
b = math.factorial(y)
div = a // (b*(x-y))
print(div)
Ce binôme coeeficient programme fonctionne mais quand je saisie deux fois le même nombre, ce qui est supposé égal à 1 ou si y est supérieur à x, il est supposé égal à 0. le programme a besoin d'un peu de peaufinage si quelqu'un peut m'aider
source d'informationauteur user3396351
Vous devez vous connecter pour publier un commentaire.
Votre programme va continuer avec le deuxième
if
déclaration en cas dey == x
provoquant uneZeroDivisionError
. Vous avez besoin de faire les déclarations mutuellement exclusives; la façon de le faire est d'utiliserelif
("else if") au lieu deif
:Cette question est vieux, mais comme elle vient de haut sur les résultats de la recherche je ferai remarquer que, scipy a un coefficient binomial fonction:
(Voir la documentation.)
Voici une version qui utilise le formule correcte . 🙂
...
Voici une version alternative de
binomial()
j'ai écrit il y a plusieurs années qui n'utilise pasmath.factorial()
qui n'existait pas dans les anciennes versions de Python. Toutefois, elle renvoie 1 si r n'est pas in range(0, n+1).Donc, cette question revient tout d'abord si vous la recherche pour "mettre en Œuvre des coefficients binomiaux dans Python". Seulement cette réponse dans sa deuxième partie contient une mise en œuvre efficace qui s'appuie sur la multiplicatif de formule. Cette formule effectue au strict minimum le nombre de multiplications. La fonction ci-dessous ne dépend pas d'une built-ins ou des importations:
Enfin, si vous avez besoin d'encore plus de valeurs et n'ont pas l'esprit de négociation certaine précision, Stirling rapprochement est probablement la voie à suivre.
Pour Python 3, scipy a la fonction scipy.spécial.peigne, ce qui peut produire à virgule flottante ainsi que entier exact résultats
Consultez la documentation de scipy.spécial.peigne.
Pour Python 2, la fonction se trouve dans scipy.misc, et il fonctionne de la même manière:
Ce sujet de celui-ci? 🙂 Il utilise la formule correcte, évite
math.factorial
et prend moins les opérations de multiplication:Aussi, afin d'éviter les grands-entier arithmétique, vous pouvez utiliser des nombres à virgule flottante, convertir
product(a[i])/product(b[i])
àproduct(a[i]/b[i])
et de réécrire le programme ci-dessus:Ici est une fonction récursive qui calcule les coefficients binomiaux à l'aide d'expressions conditionnelles