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

标签 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()));
    }
}

最佳答案

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

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));
 }
}

关于java - 存储由递归方法生成的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905299/

相关文章:

java - 更改显示微调器的 Android java 代码

java - JOOQ 映射问题(DataTypeException)

javascript - 如何通过在 JQuery 中选择元素来滚动浏览另一个 div 中数组中的元素

javascript - console.log(array) 返回填充数组,但 console.log(array.length) 为 0?

java - 在 Android 的 BroadcastReceiver 中检查 resultCode?

java - 在java中获取和编辑Drools规则

c - c中的二进制整数到整数数组

java - 编写一个递归方法,返回 'A' 在传递的字符串中出现的次数

php - 通过给定的 ID 获取所有相关的父 ID 和子 ID

python - 2 次递归调用的 Big Theta 界限