程序员

取球问题

2017-12-23  本文已影响0人  rainumdo

从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));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读