在n个球中,任意取出m个(不放回),求共有多少种取法
要求:
在n个球中,任意取出m个(不放回),求共有多少种取法
分析:
假设3个球A,B,C,任意取出2个,可分为取出的球中含A的部分和不含A的部分。即AB,AC为一组,BC为一组。
设函数F(n,m)
return F(n-1,m-1)+F(n-1,m) 假设一个特殊的球A,把整个取法分为含A的部分和不含A的部分,进行递归求出总共的取法。
代码:
1 public class demo2 { 2 //在n个球中,任意取出m个(不放回),求共有多少种取法 3 public static int f(int n, int m){ 4 if(n < m) 5 return 0; 6 if(n == m) 7 return 1; 8 if(m == 0) 9 return 1; 10 return f(n-1,m-1)+f(n-1,m); 11 } 12 13 public static void main(String[] args) { 14 // TODO Auto-generated method stub 15 int x = f(5,3); 16 System.out.println(x); 17 } 18 19 }