Top.Mail.Ru
Ответы

Срочно на языке python!!!

Для биномиальных коэффициентов (числа сочетаний из n по k) хорошо известна рекуррентная формула: Cnk=Cn-1k-1+Cn-1k, Cn0=Cnn=1.
Входные данные
Вводится 2 числа - n и k.

Выходные данные
Необходимо вывести значение Cnk.

Примеры
входные данные
4 2
выходные данные
6

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мастер
7лет

#Ввод n
while True:
try:
print('Введите n:', end=' ')
n = int(input())
break
except:
print('Должно быть целым числом!')

#Ввод k
while True:
try:
print('Введите k:', end=' ')
k = int(input())
break
except:
print('Должно быть целым числом!')

Cnk = 0
def func1(n, k):
global Cnk
if n<k: return
if n==k or k==0:
Cnk+=1
return
func1(n-1, k-1)
func1(n-1, k)

#Подсчет Cnk по реккурентной формуле
func1(n, k)

#Вывод Cnk
print('Cnk =', Cnk)

Должно быть так:

Аватар пользователя
Ученик

cache = {}

def c(k, n):
global cache
return 1 if k in (0,n) else cache.get((k,n), cache.update({(k,n):c(k,n-1)+c(k-1,n-1)}))

k, n = input().split()
k, n = int(k), int(n)
print(c(k, n))