Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python สร้างรหัสเกรย์ (Gray Codes) ด้วยการเรียกซ้ำ (Recursion)


เมื่อต้องการสร้างรหัสเกรย์แบบเรียกซ้ำ สามารถสร้างรายการว่าง เริ่มจาก ['0', '1'] แล้วขยายทีละขั้นโดยการคัดลอกย้อนกลับและเติมคำนำหน้า 0 และ 1

ตัวอย่างโค้ด

def generate_gray_list(n):
    if n <= 0:
        return
    gray_list = ["0", "1"]
    i = 2
    while i < (1 << n):
        for j in range(i - 1, -1, -1):
            gray_list.append(gray_list[j])
        for j in range(i):
            gray_list[j] = "0" + gray_list[j]
        for j in range(i, 2 * i):
            gray_list[j] = "1" + gray_list[j]
        i <<= 1
    for code in gray_list:
        print(code)

num = 3
print("The number is:", num)
print("Generating Gray codes...")
generate_gray_list(num)

ผลลัพธ์

The number is: 3
Generating Gray codes...
000
001
011
010
110
111
101
100

คำอธิบาย

  • เริ่มต้นรายการด้วยรหัสเกรย์ 1 บิต: ['0', '1']

  • ในแต่ละรอบ: คัดลอกรายการย้อนกลับ แล้วเติม '0' หน้าครึ่งแรก และ '1' หน้าครึ่งหลัง

  • ใช้บิตเชฟต์ซ้าย (<<) เพื่อเพิ่มจำนวนบิตทีละขั้น

  • ทำซ้ำจนได้ 2^n รหัสสำหรับ n บิต