首页
Preview

js实现组合计算和组合个数

js实现组合计算

JS组合计算可以通过以下代码实现:

function combination(arr, num) {
  var result = [];
  var recursion = function(arr, tempArr, num) {
    if (num === 0) {
      result.push(tempArr);
      return;
    }
    for (var i = 0, len = arr.length; i <= len - num; i++) {
      recursion(arr.slice(i + 1), tempArr.concat(arr[i]), num - 1);
    }
  };
  recursion(arr, [], num);
  return result;
}

var arr = [1, 2, 3, 4, 5];
var num = 3;
var result = combination(arr, num);
console.log(result);

这段代码中,combination函数用于计算给定数组arr中选取num个元素的所有组合。通过递归的方式,每次选取一个元素,并将剩余的元素继续递归调用。当选取的元素个数为0时,将当前的组合添加到结果数组中。最后返回结果数组。

在上面的例子中,给定数组arr=[1, 2, 3, 4, 5],选取3个元素的组合,结果为[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]

你可以根据自己的需求修改arrnum的值来计算不同的组合。

JS计算组合个数

我们可以根据上面的组合计算来求组合个数,但是上面是给出明确的数字。下面封装一个简易方法,轻松求得组合个数。

可以通过以下代码实现输入号码数量和每组号码个数,来计算有几种组合方式:

function combinationCount(totalNum, numPerCombination) {
  var factorial = function(n) {
    if (n === 0 || n === 1) {
      return 1;
    } else {
      return n * factorial(n - 1);
    }
  };
  var combinationCount = factorial(totalNum) / (factorial(numPerCombination) * factorial(totalNum - numPerCombination));
  return combinationCount;
}

var totalNum = parseInt(prompt('请输入号码数量:'));
var numPerCombination = parseInt(prompt('请输入每注号码个数:'));
var count = combinationCount(totalNum, numPerCombination);
console.log('组合方式总数:', count);

在上面的代码中,combinationCount函数用于计算给定号码数量totalNum和每组号码个数numPerCombination的组合方式总数。通过计算总数的公式,使用递归的方式计算阶乘。

通过parseInt(prompt('请输入号码数量:'))parseInt(prompt('请输入每组号码个数:'))分别获取用户输入的号码数量和每组号码个数。

你可以根据自己的需求修改输入的号码数量和每组号码个数来计算不同的组合方式总数。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
mookuh
别人笑我太疯癫, 我笑他人看不穿

评论(0)

添加评论