从N个不同的球中取出M个,求有多少种取法。
问题分析
这里显然可以通过数组合公式求出答案,但这里笔者讲一下递归的版本。
模拟这一过程,首先你要在一堆球中取出一个球,就有两种结果:
<是你想取的球>
<不是你想取的球>
- <是你想取的球>的情况
这时剩下N-1个球还要取M-1个球,同样再取一个球有两种情况
<是你想取的球>
<不是你想取的球> - <不是你想取的球>的情况
这时剩下N-1个球还要取M个球,同样再取一个球有两种情况
<是你想取的球>
<不是你想取的球>
这样我们就构造出了递归
public class test20171223 {
public static int fun(int n,int m){
if(m==0)return 1;
if(n==m)return 1;
return fun(n-1, m-1)+fun(n-1, m);
}
public static void main(String[] args) {
System.out.println(fun(3,2));
}
}
网友评论