簡體   English   中英

打印數組所有排列的遞歸方法

[英]Recursive method to print all the permutations of an array

我構建了一個遞歸方法,它應該打印數組的所有排列,但它只打印第一個選項。

這是代碼:

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

通過將 nums 設置為 -1 從 nums 中“刪除”一個數字后,您需要將其添加回來,以便循環的下一次迭代以相同的 state 開始。 否則你最終會用 -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];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM