请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

combine为什么不直接用排列组合的算法,而且视频里combine连返回值都没有,而且到底是返回数字还是数组?

视频里没有返回值 

源代码里返回的是allresult

但是注释里写的返回值是个Number

然后combine的返回值要给count

count也应该是一个数  

你这个不是成了一个数组了吗

如果只是要长度为什么要这么复杂的逻辑

直接用排列组合的计算公式不就行了吗

完全看不懂为什么要这么写

计算注数我的思路

function combine(active,size){
		if (size > active) {return}
		let factorial = Calculate.factorial
		return factorial(active)/(factorial(size)*(factorial(active-size)))
}
// 阶乘
function factorial(total){
		if (total) {
			var result = total;
			if (total-1) {
				result = total*factorial(total-1)
			}else{
				return total
			}
			return result
		}else{
			return 0
		}
}

希望老师能指点解惑

正在回答

1回答

快乐动起来呀 2017-05-21 23:09:14

哈,非常抱歉哈,注释写的不严谨,最后的返回值是一个数组,数组的长度就是注数,所以注释就简写了注数,https://img1.sycdn.imooc.com/szimg//5921ac750001a7ca12680460.jpg

看下这个运行结果C4,3的结果是4,因为Js中没有排列组合的运算,只能用递归来实现。同学这个思路是很正确的,但是有没有考虑过性能呢?可以和视频中的排列组合算法对比下

1 回复 有任何疑惑可以回复我~
  • 那个算法好复杂。。。
    没考虑过性能哦
    这个性能要怎么比
    回复 有任何疑惑可以回复我~ 2017-05-21 23:23:46
  • 非常感谢!
    回复 有任何疑惑可以回复我~ 2017-05-21 23:24:25
  • 最简单的就是看下运行时间,比比那个速度快,再复杂点就是看看浏览器的运行内存,本身一个递归就很耗性能,如果多个递归复杂度要翻倍的哈
    回复 有任何疑惑可以回复我~ 2017-05-21 23:40:13
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号