测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A49188. 生成格雷码

填空题 中等

题目描述

生成格雷码

题目描述

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


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


测试样例

1

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

参考答案

public class GrayCode { public String[] getGray(int n) { String[] result = new String[(int)Math.pow(2,n)]; if(n == 1){ result[0] = "0"; result[1] = "1"; return result; } String[] last = getGray(n-1); System.out.println(Arrays.toString(last)); for(int i=0; i<last.length; i++){ result[i] = "0"+last[i]; result[result.length-i-1] = "1"+last[i]; } return result; } }

答案解析

列出一组格雷码:


000

001

011

010

110

111

101

100


我们会发现除了最高位,其余位的每一位上下对称

上一题 下一题