取球问题

从N个不同的球中取出M个,求有多少种取法。

问题分析

这里显然可以通过数组合公式求出答案,但这里笔者讲一下递归的版本。
模拟这一过程,首先你要在一堆球中取出一个球,就有两种结果:
<是你想取的球>
<不是你想取的球>

  1. <是你想取的球>的情况
    这时剩下N-1个球还要取M-1个球,同样再取一个球有两种情况
    <是你想取的球>
    <不是你想取的球>
  2. <不是你想取的球>的情况
    这时剩下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));
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容