GrayCode

作者: SeanC52111 | 来源:发表于2017-12-18 18:06 被阅读0次

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

    相关文章

      网友评论

          本文标题:GrayCode

          本文链接:https://www.haomeiwen.com/subject/cjwmwxtx.html