生成格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(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"],
 

你可能感兴趣的:(算法,二进制,格雷码)