本文實(shí)例講述了Python實(shí)現(xiàn)的生成格雷碼功能。分享給大家供大家參考,具體如下:
問題
在一組數(shù)的編碼中,若任意兩個(gè)相鄰的代碼只有一位二進(jìn)制數(shù)不同, 則稱這種編碼為格雷碼(Gray Code),請編寫一個(gè)函數(shù),使用遞歸的方法生成N位的格雷碼。
解決方法:
給定一個(gè)整數(shù)n,請返回n位的格雷碼,順序?yàn)閺?開始。
測試樣例:
返回:["0","1"]
題目很刁鉆,題干很簡潔,樣例很高冷……

其中有一些微妙的關(guān)系

發(fā)現(xiàn)了這個(gè)規(guī)律之后,代碼自然就很好寫了
# -*- coding:utf-8 -*-class GrayCode: def getGray(self, n): # write code here global maxn maxn = n return GrayCode.getGrace(self, ['0', '1'], 1) def getGrace(self, list_grace, n): global maxn if n >= maxn: return list_grace list_befor, list_after = [], [] for i in xrange(len(list_grace)): list_befor.append('0' + list_grace[i]) list_after.append('1' + list_grace[-(i + 1)]) return GrayCode.getGrace(self, list_befor + list_after, n + 1)gary = GrayCode()print "武林站長站測試結(jié)果:"print gary.getGray(3)運(yùn)行結(jié)果:

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選