牛客網:グレイコード生成(Java)


グレイコードの生成
題目は1組の数の符号化の中で説明して、もし任意の2つの隣接するコードが1ビットのバイナリ数だけ異なっているならば、このような符号化をグレイコード(Gray Code)と呼んで、1つの関数を編纂して、再帰的な方法を使ってNビットのグレイコードを生成します.
整数nを指定すると、nビットのグレイコードを返し、0から順に返します.
テストサンプル:入力:1出力:["0","1"]
問題:
             n(  :2)        ( :00 01 10 11)
                           ( : 00 01 11 10)
           
        
        1.     n             n-1     
        2.        n-1    ,                    “0”,
        3.                          1    n     
      
         :  2           1        ["0","1"]
               ,      0   ["00","01"]
                         1    ["00","01","11","10"]
 public static String[] getGray(int n) {
 	if(n == 1) {
            String[] result = new String[2]; // 1          2
            result[0] = "0";
            result[1] = "1";
            return result;
    }
    String[] temp = getGray(n-1);
    String[] result = new String[2*temp.length]; // n   1         2 
    for(int i = 0; i < temp.length; i++) {
        result[i] ="0" + temp[i];
    }
    for(int i = 0; i < temp.length; i++) {
        result[i + temp.length] = "1" + temp[temp.length-1-i];
    }
    return result;
 }