使用递归生成格雷码的 Python 程序

pythonserver side programmingprogramming

当需要借助递归生成格雷码时,会定义一个方法,该方法创建一个空列表并将值 0 和 1 附加到其中。在函数中使用多个‘for’循环来生成格雷码。

以下是同样的演示 −

示例

import math as mt
def generate_gray_list(my_val):
   if (my_val <= 0):
      return
   my_list = list()
   my_list.append("0")
   my_list.append("1")
   i = 2
   j = 0
   while(True):
      if i >= 1 << my_val:
         break
      for j in range(i - 1, -1, -1):
         my_list.append(my_list[j])
      for j in range(i):
         my_list[j] = "0" + my_list[j]
      for j in range(i, 2 * i):
         my_list[j] = "1" + my_list[j]
      i = i << 1
   for i in range(len(my_list)):
      print(my_list[i])
my_num = 3
print("数字是:")
print(my_num)
print("正在调用将格雷码转换为二进制的方法...")
generate_gray_list(my_num)

输出

数字是:
3
正在调用将格雷码转换为二进制的方法...
000
001
011
010
110
111
101
100

解释

  • 已导入所需包。

  • 已定义一个方法,该方法创建一个空列表。

  • 它将 0 和 1 附加到列表中。

  • 多个‘for’循环用于在0到2的范围内迭代。

  • 对迭代器使用左移运算符,并与数字进行比较。

  • 在方法外部,通过传递相关参数进行调用。

  • 输出显示在控制台上。


相关文章