GrayCode

2017-12-18  本文已影响0人  SeanC52111

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

猜你喜欢

热点阅读