1. 程式人生 > >運用遞迴計算在n個球中任取m個球(不放回)共有多少種取法

運用遞迴計算在n個球中任取m個球(不放回)共有多少種取法

答案如下:
#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)。