簡體   English   中英

排列組合程序產生意外輸出

[英]Program for permutation and combination yields an unexpected output

在考慮了很長的時間來思考如何制作一個從給定輸入數組輸出所有可能的組合的Java程序之后,我終於想到了將遞歸和迭代相結合的方法。

我的代碼接受一個char數組{a,b,c}的輸入,並且應該給出長度為3的所有可能數組的輸出。

我的代碼是-

public class Brute {

    char[] val = new char[] { 'a', 'b', 'c' };

    void work(char arr[], int i) {
        for (int j = 0; j <= 2; j++) {
            if (i <= 2) {
                arr[i] = val[j];
            }
            while (i <= 2) {
                i = i + 1;
                if (i <= 2) {
                    work(arr, i);
                    System.out.println(new String(arr));
                }
            }
        }
    }

    public static void main(String args[]) {
        Brute b = new Brute();
        char arr[] = new char[] { 'p', 'q', 'r' };
        b.work(arr, 0);

    }

}

輸出為:

aaa
aaa
aaa

我不明白為什么它會給我這個輸出而不是所有組合。

問題在於,不是將i的值重新初始化為0,而是始終將i的值保留為3,並且將i的遞增值(即3)傳遞給其他遞歸調用。

暫無
暫無

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

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