Recur6. Описать рекурсивную функцию Combin1(N, K) целого типа, находящую C(N, K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения:
\(C(N, 0) = C(N, N) = 1,\)
\(C(N, K) = C(N - 1, K) + C(N - 1, K - 1) \text{ при } 0 < K < N\).
Параметры функции — целые числа; \(N > 0, 0 \leq K \leq N\). Дано число N и пять различных значений K. Вывести числа C(N, K) вместе с количеством рекурсивных вызовов функции Combin1, потребовавшихся для их нахождения.
Решение на Python 3:
import random
from scipy.special import comb
def Combin1(N,K):
if K == 0:
return 1
if N == K:
return 1
y = Combin1(N-1,K) + Combin1(N-1,K-1)
return y
#for i in range(5):
N = random.randrange(1,20)
print("n = ",N)
K = random.randrange(0,N)
print("k = ",K)
y = Combin1(N,K)
print("n Choose k: ", y)
print("SciPy => n Choose k: ", comb(N,K))