算法基础_递归_取球问题

问题:

在n个球中取出m个球(不放回),问一共有多少种取法

解题源代码如下:

/**
 *    在n个球中取出m个球,问一共有多少种取法
 * @author Administrator
 *
 */
public class Demo01 {
    public static int f(int n,int m) {
        if(n<m) return 0;//不可能事件
        if(n==m) return 1;//必然事件
        if(m==0||n==0) return 1;
        return f(n-1,m)+f(n-1,m-1);//分为两种情况,一种是没有取出特定的球,一种时取出了特定的球
        //上面一个语句的意思就是,取或者不取
    }
    
    public static void main(String[] args) {
        int s = f(10,3);
        System.out.println(s);
    }
}

解题思路:

其实每次取球就是两种情况:取了要取的球 和 没取要取的球

那么递归体就出来了

再设置递归的跳出条件,就完成了

希望能给大家带来帮助

以上

猜你喜欢

转载自www.cnblogs.com/lavender-pansy/p/10507155.html