2015-11-01 72 views
2

思想在相當長的時間,就如何使輸出從給定的輸入陣列中的所有可能的組合Java程序之後,我終於想到了通過組合遞歸和迭代這樣做的。方案的排列組合產生意想不到的輸出

我的代碼需要輸入字符數組{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 

我不明白爲什麼它給了我這個輸出,而不是所有的組合。

+0

爲什麼你會初始化'arr'爲'{ 'P', 'Q', 'R'}',因爲要置換的數組實際上是'{ 'A', 'B', 'C'} '? –

+1

僅用於調試目的,以便我知道arr []實際上正在修改。 –

回答

0

的問題是,代替重新初始化的i至0 i的值始終保持爲3的值和i的值遞增(其3)被傳遞到進一步的遞歸調用。