#python #python-3.x
#python #python-3.x
Вопрос:
В настоящее время я пытаюсь создать биномиальный коэффициент, используя Python. Итак, я попытался создать 3 разных генератора, по одному для n!, k! и (n-k)!. Поскольку я знаю, что return вернет не значение, а вместо этого местоположение, в котором хранится память, я попытался использовать yield. Но если я введу yield, как показано ниже, это каким-то образом даст другую сохраняемую память, а не разделит друг друга в формуле ans. Я все еще в замешательстве, потому что предполагаю, что это мой отступ, но когда я возлюсь с ним, он просто продолжает выдавать сообщения об ошибках. Кто-нибудь может помочь изменить это так, чтобы оно освобождало значение? Я просто хочу заставить генератор выдавать значения, чтобы их можно было использовать для формулы ans в последней строке.
def binom_coeff(n,k):
def fact(n):
basic = 1
for i in range(1,n 1):
basic = basic * i
yield basic
def fact(k):
basic_3 = 1
for j in range(1,j 1):
basic_3 = basic_3 * j
yield basic_3
def fact_d(n,k):
basic_2 = 1
for m in range(1, n-k 1):
basic_2 = basic_2 * m
yield basic_2
ans = basic / (basic_3 * basic_2)
return ans
Комментарии:
1. Кажется, вы определяете несколько функций, которые вы никогда не вызываете. В чем идея, стоящая за этим?
2. Я не думаю, что вам нужен генератор здесь. Просто
return basic
и т.д. И эти инструкции должны быть внутри функций. В настоящее времяyield
операторы не являются.
Ответ №1:
Я не думаю, что вам нужен генератор здесь. Просто return basic
и т.д. И эти инструкции должны быть внутри функций. В настоящее время yield
операторы не являются.
Даже если вы хотите использовать генератор, вы никогда не вызываете функции. Кроме того, есть несколько опечаток.
def binom_coeff(n,k):
def fact(n):
basic = 1
for i in range(1, n 1):
basic = basic * i
return basic
ans = fact(n) / (fact(k) * fact(n-k))
return ans