程序在python中转换给定数字的格雷码

假设我们有一个数字n,我们必须找到给定数字的格雷码(换句话说,第n个格雷码)。众所周知,格雷码是一种对二进制数字进行排序的方式,以使每个连续数字的值恰好相差一位。一些格雷码是:[0、1、11、10、110、111,依此类推]

因此,如果输入像n = 12,则输出将是10,因为二进制的12是(1100),相应的格雷码将是(1010),其十进制等效值为10。

为了解决这个问题,我们将按照以下步骤操作:

  • 定义一个功能solve()。这将花费n

  • 如果n等于0,则

    • 返回0

  • x:= 1

  • 当x * 2 <= n时

    • x:= x * 2

  • 返回x + solve(2 * x-n-1)

让我们看下面的实现以更好地理解:

示例

class Solution:
   def solve(self, n):
      if n == 0:
         return 0
      x = 1
      while x * 2 <= n:
         x *= 2
      return x + self.solve(2 * x - n - 1)

ob = Solution()n = 12
print(ob.solve(n))

输入值

12

输出结果

10
猜你喜欢