Algorytm obliczający wariacje

0

Witam, mam problem z napisaniem algorytmu który będzie obliczał:
Liczbe wariacji k-elementowych ze zbioru n-elementowego bez powtórzeń i z powtórzeniami.

int Var(int k, int n)
{
	long silnia(int s) {
   if (n < 1) {
     return 1;
   } else {
     return s * silnia(s - 1);
   }
}

Zapisałem kod na silnię, jednak nie wiem jak dalej to zastosować. Z góry dzięki za pomoc

1

Wariacje z powtórzeniami:
https://pl.wikipedia.org/wiki/Wariacja_z_powt%C3%B3rzeniami
Nie potrzeba silni.

Bez powtórzeń:
https://pl.wikipedia.org/wiki/Wariacja_bez_powt%C3%B3rze%C5%84
Tutaj też lepiej mnożyć n * (n - 1) * ... * (n - k + 1), zamiast liczyć silnię.

def number_variations_without_repetitions(n, k):
	acc = 1
	while n >= k:
		acc = acc * n
		n -= 1
	return acc


print(number_variations_without_repetitions(5, 3)) # -> 60

1 użytkowników online, w tym zalogowanych: 0, gości: 1