博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归(一)之java实现排列组合计数
阅读量:4036 次
发布时间:2019-05-24

本文共 755 字,大约阅读时间需要 2 分钟。

从m个数中随机取出n个数,有多少种组合(忽略顺序)。即Cmn,m为下标,n为上标。

公式Cmn = m!/n!/(m-n)!

从公式中可以看出实际上就是计算一个数的阶乘,阶乘计算出来了,就是个除法的运算而已。

代码如下:

/**     * 求排列组合     * m为下标, n为上标     * 结果是m!/n!/(m-n)!     */    public static double Cmn(int m, int n){        return devide(devide(recurrence(m), recurrence(n)).doubleValue(), recurrence(m-n)).doubleValue();    }    /**     * 递归计算一个数的阶乘     * @param num     * @return     */    public static double recurrence(int num){        if(num<=1)            return 1;        else            return num*recurrence(num-1);    }    /**     * 计算m/n     * @param m     * @param n     * @return     */    public static BigDecimal devide(double m, double n){        return BigDecimal.valueOf(m).divide(BigDecimal.valueOf(n),2, BigDecimal.ROUND_HALF_UP);    }

 

转载地址:http://hqcdi.baihongyu.com/

你可能感兴趣的文章
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Word Break(python)
查看>>
【剑指offer】面试题26:复杂链表的复制
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java swing最简单实例(2) 往JFrame里面放一个容器或组件
查看>>