这个计算不是排列组合吗,为什么不直接用公式呢
来源:4-4 创建接口模块(上)

诺森德的凛冽寒风
2017-05-21
这个递归完全看不懂,如果是排列组合的算法为什么不直接用排列组合的公式呢
写回答
3回答
-
排列组合是这个公式,但是实现起来确实是那样的,js中并没有排列组合的运算方法,只能是自己用递归实现的,同学可以试着自己写写,大概就能理解了,有问题我们再沟通
012017-05-21 -
庄里的老大爷
2019-09-16
说说个人看法,不足之处,请批评指正。
直接用递归算阶乘,容易出现 堆栈溢出。
如果在计算阶乘的时候,不用递归,用循环,就没事。
这样业务逻辑直接用排列组合公式,会更清楚。
function fac(n){
let result = 1;
for(let i=1;i<=n;i++){
result *= i;
}
return result;
}
/**
* [combine 组合运算]
* @param {[number]} n [组合运算上标]
* @param {[number]} m [组合运算下标]
* @return {[number]} [值]
*/
function combine(n,m){
let count = 0;
if(n< m){
return;
}
if(n == m){
return 1;
}else{
count = fac(n)/(fac(m)*fac(n-m));
}
return count;
}
00 -
冷眼看尽繁华丿
2017-06-23
js中不能直接运算n!,只能使用递归去实现。
00
相似问题