一.题目描述
The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of
gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:
00 - 0
01 - 1
11 - 3
10 - 2
Note:
• For a given n, a gray code sequence is not uniquely defined.
• For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.
• For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
二.题目分析
昨天腾讯也刚考了这道题,因为不是本人考试,所以不是很记得题目是否有其他限制,这里只是按照腾讯的基本要求:用递归实现格雷码的生成,纯属抛砖引玉。
这里,主要函数只是实现了0~2^(n-1)
的自然数到格雷码排列的映射,还需要一个函数,将int
型数据转换为n
位二进制数,最后输出结果。
关于格雷码的定义,百度有较为详细的解释,传送门:http://baike.baidu.com/link?url=_X6MWv6OPt93bbuMIXnmXIqMKeQgnI2xPa1xkgPlrZR_7uG8xYKec3B67zm8JhqqEdylnUBC7Op8oWp0vQe_bq
以下列出1
位到4
位的格雷码,可以从中发现一些规律: