【发布时间】:2019-11-08 06:11:39
【问题描述】:
编辑:我会尽量在这个问题上更清楚:
我有这个数组[1,2,3],我想生成这样的所有排列:
1,2,3 | 1,3,2 | 3,2,1 | 3,1,2 | 2,3,1 | 2,1,3 | 1 | 1,2 | 1,3 | 2 | 2,3 | 2,1 | 3 | 3,1 | 3,2
请注意,我们还需要一位数和两位数的排列,这在建议的副本中没有解决。
我尝试让 Python 代码适应 JavaScript:
function my_permutations(lst) {
if (lst.length == 0) {
return []
}
if (lst.length == 1) {
return [lst]
}
var l = []
var m;
var remLst;
for (var i = 0; i < lst.length; i++) {
m = lst[i]
remLst = lst.slice(0, i).concat(lst.slice(i + 1))
my_permutations(remLst).forEach(function(element) {
l.push([m].concat(element))
});
}
return l
}
console.log(JSON.stringify(my_permutations([1, 2, 3])))
通过代码中的新编辑,我可以获得三元组的所有组合!但我想要更多,我想要组合成对和单例。我该怎么做?
所以并不是所有可能的组合都会生成。
我该如何解决这个问题?
【问题讨论】:
-
@Stuart 我也是这么想的,但在这种情况下,它不是“给我解决方案”而是“我的解决方案有错误”。
-
@ZivBen-或者,这是“我的代码有问题,我需要帮助修复它”,而不是“给我代码”。
-
以哈斯塔的名义,各位——这不是骗人的。 OP 已有代码,不需要这一步。解决 here 的错误是对另一个问题的完全不同的解决方案......
-
@VLAZ mod 标志在这里完全不合适。你不应该推荐那个。刘易斯旗将被拒绝。
-
@bosskay972:你没有被封禁。有人,或者几个人,根据他们的名声,认为这个问题是另一个问题的重复,有一段时间,它被标记为这样,这意味着它无法收到答案。但正如在 cmets 中看到的那样,VLAZ 辩称它不是重复的,并说服了足够多的人同意它现在恢复了正常状态。现在,理想情况下,有人可以提出修复建议。
标签: javascript recursion combinations