您的位置:首页 > 其它

生成格雷码

2016-03-14 22:52 246 查看
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:
1

返回:["0","1"]

import java.util.ArrayList;
import java.util.List;

public class GrayCode {
public static void main(String[] args) {
GrayCode grayCode = new GrayCode();
String[] str = grayCode.getGray(4);

for (int i = 0; i < str.length; i++) {
System.out.print("[" + "\"" + str[i] + "\"],");
}
}

public String[] getGray(int n) {
String[] Gray = { "0", "1" };
if (n == 1) {
return Gray;
}
String[] lastSeq = getGray(n - 1);
List<String> thisSeq = new ArrayList<String>();
for (int i = 0; i < lastSeq.length; i++) {
thisSeq.add("0" + lastSeq[i]);
}
for (int i = lastSeq.length - 1; i >= 0; i--) {
thisSeq.add("1" + lastSeq[i]);
}

return thisSeq.toArray(new String[thisSeq.size()]);

}

}
["0000"],["0001"],["0011"],["0010"],["0110"],["0111"],["0101"],["0100"],
["1100"],["1101"],["1111"],["1110"],["1010"],["1011"],["1001"],["1000"],


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 算法 格雷码