每日算法(十八)-java求组合 输入两个参数 参数1 小球的个数 参数2 取多少个 输出 一共有多少种取法
求组合
输入两个参数 参数1 小球的个数 参数2 取多少个
输出 一共有多少种取法
比如 f(5,2) 表示从5个球中取2个
这里的两个我们可以把他看作是特殊球,比如一共五个球,有两个特殊球,每次依次去取,每次取出只有两种情况,一种是取到了特殊球,一种是没取到特殊球,所有情况相加则就是一共的取法,这里采用递归的思想
代码如下
public static int returnResult(int number,int target){
//出口
//总的球比要拿出来的球小
if(number<target){
return 0;
}
//总的球和拿出来的球相等,只有一种取法
if(number==target){
return 1;
}
//当要取出的球减到0就不能再减了
if(target==0){
return 1;
}
//要么一定取到特殊球+要么没取到特殊球
return returnResult(number-1, target-1)+returnResult(number-1, target);
}