这个计算不是排列组合吗,为什么不直接用公式呢

来源:4-4 创建接口模块(上)

诺森德的凛冽寒风

2017-05-21

这个递归完全看不懂,如果是排列组合的算法为什么不直接用排列组合的公式呢http://szimg.mukewang.com/59213fcc0001594505180193.jpg

写回答

3回答

快乐动起来呀

2017-05-21

排列组合是这个公式,但是实现起来确实是那样的,js中并没有排列组合的运算方法,只能是自己用递归实现的,同学可以试着自己写写,大概就能理解了,有问题我们再沟通

0
1
诺森德的凛冽寒风
非常感谢!
2017-05-21
共1条回复

庄里的老大爷

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;


}


0
0

冷眼看尽繁华丿

2017-06-23

js中不能直接运算n!,只能使用递归去实现。

0
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程