在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
image.png
package graycode;
import java.util.*;
public class graycode {
public static void main(String[] args) {
String []result = getGray(2);
for(String r:result) {
System.out.println(r);
}
}
public static String[] getGray(int n) {
ArrayList<String> v = new ArrayList<String>();
if(n==1) {
v.add("0");
v.add("1");
String[] r = new String[v.size()];
v.toArray(r);
return r;
}
else {
String[] r = getGray(n-1);
int vsize = r.length;
ArrayList<String> v2 = new ArrayList<String>();
for(int i=0;i<vsize;i++) {
if(i%2==0)
{
v2.add(r[i]+"0");
v2.add(r[i]+"1");
}else {
v2.add(r[i]+"1");
v2.add(r[i]+"0");
}
}
String[] r2= new String[v2.size()];
v2.toArray(r2);
return r2;
}
}
}
网友评论