问题描述:现假设有n个大小相同的球,从中取m个球(不放回)。问总共有多少种取法?
代码:public class HHH
{
public static 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);
}
public static void main(String[] args) {
int k = f(n,m);
System.out.println(k);
}
}
思路: 现假设有一个特殊的球A,与其他球完全相同。
若已经取了这个特殊的A,则取法为f(n-1,m-1)
若没取A,则取法为f(n-1,m)
溢出栈注意:递归的跳出条件考虑不充分。如n=3,m=4。