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