js实现概率公式C(n, m)

作者:沙师弟时间:2016-08-18
最近遇到一个这样一个需求,在n个数字中选出m个组合数,刚好用到概率公式C(n,m),其中:n是下标,m是上标 (C上面m,下面n),而C(n, m)=(n!)/(m!)/(n-m)!,那么“!”是什么意思呢? 比如n是5、m是2,那么n!就是5*4*3*2*1,所以这里得出C(5, 2)=(5!)/(2!)/(5-2)!=(5*4*3*2*1)/(2*1)/(3*2*1),这样代码就好实现了:
function a(n, m){
    return n<m ? 0 : f(n)/f(m)/f(n-m); //概率公式C(n, m)=(n!)/m!/(n-m)!
    function f(h){
        for (var i = h, r = 1; i > 0; i--) {
            r *= i
        }
        return r;
    }
}

console.log( a(5, 2) ) // 10