0

例如,我有一个数组

["red", "green", "blue", "purple"]

此数组中可以有任意数量的条目。使用这个数组,我想创建一个可能的组合列表,但从不复制一个组合

例如,上面的数组将导致

red,green,blue,purple
red,green,purple,blue
red,blue,green,purple
red,blue,purple,green
red,purple,blue,green
red,purple,green,blue

green,red,blue,purple
green,red,purple,blue
green,blue,red,purple
green,blue,purple,red
green,purple,blue,red
green,purple,red,blue

blue,red,green,purple
blue,red,purple,green
blue,green,red,purple
blue,green,purple,red
blue,purple,green,red
blue,purple,red,green

purple,red,green,blue
purple,red,purple,blue
purple,green,red,blue
purple,green,blue,red
purple,blue,green,red
purple,blue,red,green

我是递归的新手,我还没有完全掌握如何用它来完成这个,

4

2 回答 2

1
function combs(arr,str){
  var arrCopy,popped;
  for(var i =0; i<arr.length; i++){
     arrCopy = arr.splice(0);
     popped = arrCopy.splice(i,1)
     combs(arrCopy,popped);
  }
  if(arr.length === 0){
    console.log(str);
  }
}

这会将所有选项打印到控制台。如果您需要以某种格式返回它们,您可以返回而不是在基本情况下打印,并根据需要将递归调用的结果连接在一起。

于 2013-03-27T20:42:43.070 回答
0

你可以从这个开始:

http://rosettacode.org/wiki/Permutations#JavaScript

它被实现为输出到 HTML 元素,但您应该能够轻松地对其进行调整以满足您的需求。

于 2013-03-27T20:44:17.583 回答