<script type="text/javascript">
//求一个数组内任意N个元素组合
function group(a, len){
var arr = a.slice(0),item = [arr.shift()];
(function func(item,arr){
var itemc,temp = arr.slice(0),l = len - item.length;
if( l == 0){
result.push(item);
}else if( l == 1){
for(var j in arr){
itemc = item.slice(0);
itemc.push(arr[j]);
result.push(itemc);
}
}else if( l > 1){
itemc = item.slice(0);
itemc.push(temp.shift());
func(itemc,temp);
item.length + temp.length >= len && func(item,temp);
}
})(item,arr);
arr.length >= len && group(arr, len);
return result;
} var arr=[2,3,2,1,3];//指定数组,计算所有情况组合
for(var l=2;l<arr.length;l++){
var result=[],temp=group(arr,l),str="";
for(var i=0;i<temp.length;i++){
str += "+"+temp[i].join("*");
}
document.write(l+"组合: "+str.substring(1)+"="+eval(str.substring(1))+"<br/>");
}
</script>
2组合: 2*3+2*2+2*1+2*3+3*2+3*1+3*3+2*1+2*3+1*3=47
3组合: 2*3*2+2*3*1+2*3*3+2*2*1+2*2*3+2*1*3+3*2*1+3*2*3+3*1*3+2*1*3=97
4组合: 2*3*2*1+2*3*2*3+2*3*1*3+2*2*1*3+3*2*1*3=96
//求一个数组内任意N个元素组合
function group(a, len){
var arr = a.slice(0),item = [arr.shift()];
(function func(item,arr){
var itemc,temp = arr.slice(0),l = len - item.length;
if( l == 0){
result.push(item);
}else if( l == 1){
for(var j in arr){
itemc = item.slice(0);
itemc.push(arr[j]);
result.push(itemc);
}
}else if( l > 1){
itemc = item.slice(0);
itemc.push(temp.shift());
func(itemc,temp);
item.length + temp.length >= len && func(item,temp);
}
})(item,arr);
arr.length >= len && group(arr, len);
return result;
} var arr=[2,3,2,1,3];//指定数组,计算所有情况组合
for(var l=2;l<arr.length;l++){
var result=[],temp=group(arr,l),str="";
for(var i=0;i<temp.length;i++){
str += "+"+temp[i].join("*");
}
document.write(l+"组合: "+str.substring(1)+"="+eval(str.substring(1))+"<br/>");
}
</script>
2组合: 2*3+2*2+2*1+2*3+3*2+3*1+3*3+2*1+2*3+1*3=47
3组合: 2*3*2+2*3*1+2*3*3+2*2*1+2*2*3+2*1*3+3*2*1+3*2*3+3*1*3+2*1*3=97
4组合: 2*3*2*1+2*3*2*3+2*3*1*3+2*2*1*3+3*2*1*3=96
解决方案 »
- 把表格改成div+css
- 用Jquery怎么控制div层的显示、消失?
- 如何让Js脚本暂停
- 怎么对object.id进行字符串操作?
- 初学者关于javascript的一个疑问
- 利用一个div控制另一个div的内容滚动,并且第一个div既可以拖动又可随鼠标中论滚动以
- 关于item获取的值
- [紧急求助]一个简单的函数调用返回值的问题,请各位看看问题在哪里?[我在线等候]
- 升5个等边三角行,散200,
- 请问用dom方法:document.createElement("table");创建一个table,怎么没有指定table的位置等信息?
- 麻烦大家帮忙解密一下这个js
- 帮忙解决下这个错误。14.Caused by: java.lang.NoClassDefFoundError: Could not initialize cla
function calc(arr, n) {
var sum = function (arr) {
var result = 1;
for (var i = 0; i < arr.length; i++) {
result *= arr[i];
}
return result;
};
var loop = function (_arr, start, p, arr, callback) {
var result = 0;
var count = start;
arr = arr || [];
for (var i = start; i < _arr.length; i++) {
var tmparr = arr.slice(0).concat([_arr[i]]);
if (p < n) {
result += loop.call(null, _arr.slice(1), count, p + 1, tmparr);
}
if (tmparr.length == n) {
result += sum(tmparr);
}
count++;
}
return result;
};
return loop(arr, 0, 1);
}var a = [2, 3, 1, 3, 2];
console.log(calc(a, 2));//47
console.log(calc(a, 3));//97
console.log(calc(a, 4));//96//如果不嫌棄使用prototype的話Array.prototype.calc = function (n) {
return calc.call(null, this, n);
};console.log(a.calc(2));//47
console.log(a.calc(3));//97
console.log(a.calc(4));//96