取球问题

作者: rainumdo | 来源:发表于2017-12-23 17:33 被阅读0次

    从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));
        }
    }
    

    相关文章

      网友评论

        本文标题:取球问题

        本文链接:https://www.haomeiwen.com/subject/qpjkwxtx.html