分析:
1、如果k>n,結果為0
2、k=n時,只有1組
3、k<n的時候,可以把解空間分為兩部分:假設其中一個人叫X,那么選X的解和不選X的解加起來就是總的解。不選X的話,那么在剩下的n-1個人中選k個。選X的話,在剩下的n-1個人中再選k-1個。
代碼:
#include<iostream> using namespace std; int fun(int n, int k){ if (k == n||k==0){ return 1; } if (k > n){ return 0; } return fun(n - 1, k) + fun(n - 1, k - 1); } int main(){ cout << "輸入兩個整數n和k:"; int n, k; cin >> n >> k; cout << "C(n,k)=" << fun(n, k) << endl; return 0; }