【问题标题】:Recursive method to print all the permutations of an array打印数组所有排列的递归方法
【发布时间】:2020-12-05 06:23:11
【问题描述】:

我构建了一个递归方法,它应该打印数组的所有排列,但它只打印第一个选项。

这是代码:

public static void printPermutation(int[] nums, int index, int[] print_arr) {
    if (index == nums.length) {
        System.out.println(Arrays.toString(print_arr));
    }
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] > 0) {
            print_arr[index] = nums[i];
            nums[i] = -1;
            printPermutation(nums, index + 1, print_arr);
        }
    }
}

【问题讨论】:

  • 嗨。您能否将 resvuisive 这个词更正为递归并给我们一个例子来理解您想要做什么?谢谢
  • 欢迎来到 SO。根据nums 输入的长度打印您的数组。请说明您是如何执行此功能的。

标签: java arrays for-loop recursion permutation


【解决方案1】:

通过将 nums 设置为 -1 从 nums 中“删除”一个数字后,您需要将其添加回来,以便循环的下一次迭代以相同的状态开始。否则你最终会用 -1 填充nums。有了这个改变,我正确地得到了 1,2,3 的所有排列:

if (nums[i] > 0) {
    print_arr[index] = nums[i];
    nums[i] = -1;
    printPermutation(nums, index + 1, print_arr);
    // reset back to initial state
    nums[i] = print_arr[index];
}

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2019-04-03
    • 2020-08-10
    • 1970-01-01
    • 2013-10-14
    • 2015-08-03
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多