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]]
。
你可以根据自己的需求修改arr
和num
的值来计算不同的组合。
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('请输入每组号码个数:'))
分别获取用户输入的号码数量和每组号码个数。
你可以根据自己的需求修改输入的号码数量和每组号码个数来计算不同的组合方式总数。
评论(0)