在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
测试样例:
1
返回:["0","1"]
# -*- coding:utf-8 -*-
# 思路:n位gray code由n-1为gray code从前置位添加0,并逆序后前置位填1组成,返回的list大小为2^n次方
class GrayCode:
def getGray(self, n):
# write code here
if n == 1:
return ["0", "1"]
else:
return map(lambda x: "0" + x, self.getGray(n-1)) + map(lambda x: "1" + x, self.getGray(n-1)[::-1])
# -*- coding:utf-8 -*-
class GrayCode:
def getGray(self, n):
# write code here
if n == 1:
return ['0','1']
pre = self.getGray(n-1)
pre0 = ['0'+i for i in pre]
pre1 = ['1'+i for i in pre]
pre1.reverse()
return pre0+pre1