导读:一个领导突然问到的问题,然后我想了一段时间后写出的代码
事件:一个一维数组,在不排序不重复的情况下有多小项,请输出?
例如:
[1] => [1]
[1,2] => [1,2],[2,1]
[1,2,3] => [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
........
js代码:
var cirarr = function(arr,index,out){
for(var i=index;i<arr.length;i++){
var tmp = [].concat(arr);
var tep = tmp.splice(i,1);
tmp.splice(index,0,tep[0]);
if(i != index || out) console.log(tmp.join());
if(index < arr.length) cirarr(tmp,index+1,false)
}
}
测试:
1、cirarr([1],0,true)
2、cirarr([1,2],0,true)
3、cirarr([1,2,3],0,true)
4、cirarr([1,2,3,4],0,true)
......
以上代码 out 参数应该可以优化:原因是第一个数组不会输出,有兴趣的同学可