数组中包含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]大家还有没有什么更好的计算方式?

解决方案 »

  1.   

    <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>
      

  2.   

    你可以把length放在一个变量里,要是慢的话