日期:2014-05-16  浏览次数:20335 次

关于复试计算讨论
数组中包含1,2,3,4,5
将其组合为
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 


本人尝试用的数组递归方式,但是一旦数组过多情况会出现很多重复数据,而且很慢。
比如先把原数组去掉第一个,构成[2,3,4,5]第二个是[1,3,4,5]在向下递归运算一次成
[3,4,5][2,4,5][2,3,4]
[3,4,5][1,4,5][1,3,4]

大家还有没有什么更好的计算方式?

------解决方案--------------------
<script type="text/javascript">
var arr = [1,2,3,4,5,6,7,8,9];
var rsl = [];
function fn(arr){
if(arr.length > 3){
for(var i=1;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
rsl.push([arr[0], arr[i], arr[j]]);
}
}
}else {
rsl.push(arr);
return ;
}
arr.shift();
fn(arr);
}
fn(arr);
alert(rsl);
</script>