我正在尝试递归地生成列表中的所有项目。我已经看到了一些类似问题的解决方案,但我无法让我的代码正常工作。有人能指出我如何修复我的代码吗?
这对所有 S/O'ers 开放,而不仅仅是 Java 人员。
(另外我应该注意它会因 SO 异常而崩溃)。
样本输入:
[1, 2, 3]
输出:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
//allPossibleItems is an AL of all items
//this is called with generatePerm(null, new ArrayList<Item>);
private void generatePerm(Item i, ArrayList<Item> a) {
if (i != null) { a.add(i); }
if (a.size() == DESIRED_SIZE) {
permutations.add(a);
return;
}
for (int j = 0; j < allPossibleItems.size(); j++) {
if (allPossibleItems.get(j) != i)
generatePerm(allPossibleItems.get(j), a);
}
}