存储由递归方法生成的数组

时间:2016-03-10 00:19:29

标签: java arrays recursion

如何保存以下方法生成的所有数组?

static void permute(java.util.List<Character> arr, int k) {
    for (int i = k; i < arr.size(); i++) {
        java.util.Collections.swap(arr, i, k);
        permute(arr, k + 1);
        java.util.Collections.swap(arr, k, i);
    }
    if (k == arr.size() - 1) {
        System.out.println(java.util.Arrays.toString(arr.toArray()));
    }
}

1 个答案:

答案 0 :(得分:1)

您可以将result列表作为参数传递给递归方法以保存结果。

static void permute(List<Character> arr, int k,List<List<Character>> results) {
 for (int i = k; i < arr.size(); i++) {
    java.util.Collections.swap(arr, i, k);
    permute(arr, k + 1, results);
    java.util.Collections.swap(arr, k, i);
 }
 if (k == arr.size() - 1) {
   results.add(new ArrayList<>(arr));
 }
}