ITPub博客

首页 > IT职业 > IT生活 > 关于N个中选M个组合问题的递归算法(JavaScript版)

关于N个中选M个组合问题的递归算法(JavaScript版)

IT生活 作者:lgchen 时间:2021-09-09 09:11:24 0 删除 编辑

昨天无意间看见一个慕课网网友的提问,是关于8个里面选5个的组合问题,引起了小编的兴趣。起初小编感觉问题比较容易,便不假思索的堆起代码。后来调试发现,小编入坑了。经过一番分析最终还是解决了这个比较经典的问题。限于小编水平,只是采用了比较容易理解的递归算法解决该问题。
言归正传,N个中选M个组合问题(其中:N>=M),可以分解为两个小规模问题:
1.从N个中选取编号最小的一个,然后从剩余的N-1个中选取M-1个;
2.从除最小编号外剩余的N-1个中选出M个;
经过递归便可得到所求解。(即:C(M,N) = C(M-1,N-1) + C(M,N-1))
看上去问题比较清晰,但是,递归的关键还是问题的终止条件:
1.当问题规模变化成从M中选去M个的时候即(N=M),选取工作完成;
2.当选取的M=0时,即已经选择了M个时,选取工作完成。
代码如下:

代码经过本人调试可以运行得到正确结果。尽管如此,大家都知道递归的代码效率不高,限于小编水平代码比较粗糙还望大家多多指点,多多交流,相互学习,相互促进。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1276/viewspace-2808472/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    115
  • 访问量
    1025