是浏览器的bug?  换了个浏览器发现输出结果是对的
用360输出到控制台里就成了但是如果用alert弹出结果的话又是对的。感觉应该是在arr_del函数中result对arr数组的引用导致的,但是输出的代码又是在arr_del函数前执行,还是想不通。慢点结贴,坐等大牛分析。

解决方案 »

  1.   

    你 console.log(arr); 时 Arrays[i]=arr_del(arr, i, l-i-1); 还没执行呢
      

  2.   

    combine 是组合
    求组合可以这么写// combination 组合
    function combine(arr, num) {
      var len = arr.length;
      if(~~num == 0) num = len;
      var mask = [];
      
      for(var i=0; i<len; i++) mask.push( i<num ? 1 : 0);
      var res = [];  do {
        var t = [];
        for(i=0; i<len; i++) if(mask[i]) t.push(arr[i]);
        res.push(t);
        
        s = 0;
        for(i=0; i<len-1; i++) {
          if(mask[i] == 0) s++;
          if(s == len - num) break;      if(mask[i] == 1 && mask[i+1] == 0) {
            mask[i] = 0;
            mask[i+1] = 1;
            for(; i>0; i--) {
              if(mask[i] && mask[i-1] == 0) {
                mask[i-1] = 1;
                mask[i] = 0;
              }
            }
            break;
          }
        }
      }while(s < len - num);
      return res;
    }
    arr  = [1,2,3,4,5];
    r = combine(arr,3);[[1,2,3],[1,2,4],[1,3,4],[2,3,4],[1,3,5],[2,3,5],[1,4,5],[2,4,5],[3,4,5]]