Program obliczający symbol Newtona

0

Czemu program nie wyświetla wyniku dla k!=n? Gdzie jest błąd?

#include <iostream>
#include <cmath>

using namespace std;

int silniaN(int n)
{
	if (n==0)
		return 1;
	
	return silniaN(n-1)*n;
}

int silniaK(int k)
{
	if (k==0)
		return 1;
	
	return silniaK(k-1)*k;
}

int silniaNK(int n, int k)
{
	if((n-k)==0)
		return 1;
		
	return silniaNK(n-1, k-1)*(n-k);
}

int main()
{
	int n,k;
	cin >> n;
	cin >> k;	
	
	int licznik = silniaN(n);
	int mianownik = silniaK(k) * silniaNK(n, k);
	
	cout << licznik/mianownik;
	
	return 0;
}
0

Co niby ma liczyć silniaNK?
Przecież, jak Chcesz Symbol Newtona, to sobie Daj:
silnia(n) / (silnia(k) * silnia(n - k) ).
A ta metoda silniaNK to chyba jakiś blindspot:)

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