PHP计算排列组合C(m,n)结果
由于项目中需要使用到排列组合运算,根据计算公式,写了如下方法。
/**
* 排列组合运算C(m,n),计算有多少种组合
* 计算公式为:C(m, n) = n(n-1)(n-2)...(n-m+1) / m!
*
* @param integer $m
* @param integer $n
* @return integer $sum
*/
public function calculatePermutation($m,$n){
$sum=0;
if($n>$m){
$sum=0;
}elseif ($n==$m){
$sum=1;
}elseif($n==0){
$sum=0;
}elseif($n==1){
$sum=$m;
}elseif($n>1){
$sum_m=$sum_n=1;
$difference=$m-$n;
for ($i=$n+1;$i<=$m;$i++){
$sum_m=$sum_m*$i;
}
for($j=1;$j<=$difference;$j++){
$sum_n=$sum_n*$j;
}
$sum=$sum_m/$sum_n;
}else{
$sum=0;
}
return $sum;
}
}