答案如下:
#include<iostream>
using namespace std;
int f(int n, int m){
if(n < m) return 0;
if(n == m) return 1;
if(m == 0) return 1;
return f(n-1,m-1)+f(n-1,m);
}
int main(){
int m,n;
int r = f(4,2);
cout<<r;
}
思路为:
设在n个球中有一个特殊球x。每一次取球时进行如下讨论:把所有的取法分为两种情况,一种为含x球,另一种为不含x球。含x球则取下一个球,即f(n-1,m-1);不含x球则在剩下的n-1个球中取m个球,即f(n-1,m)。