格雷編碼遞迴實現

2021-09-24 02:17:45 字數 956 閱讀 3955

在一組數的編碼中,若任意兩個相鄰的**只有一位二進位制數不同, 則稱這種編碼為格雷碼(gray code),請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。

給定乙個整數n,請返回n位的格雷碼,順序為從0開始。

測試樣例:

返回:["0","1"]

結題思路:如果仔細觀察格雷碼的結構,我們會有以下發現: 

1、除了最高位(左邊第一位),格雷碼的位元完全上下對稱(看下面列表)。比如第乙個格雷碼與最後乙個格雷碼對稱(除了第一位),第二個格雷碼與倒數第二個對稱,以此類推。 

2、最小的重複單元是 0 , 1。

000 

001 

011 

010 

110 

111 

101 

100

所以,在實現的時候,我們完全可以利用遞迴,在每一層前面加上0或者1,然後就可以列出所有的格雷碼。

public class test 

class solution

string last = getgray(n - 1);

for (int i = 0; i < last.length; i++)

return graycode;

}}

格雷碼還有一種實現方式是根據這個公式來的 g(n) = b(n) ^ b(n+1), 這也是格雷碼和二進位製碼的轉換公式。

public class test 

system.out.println(arrays.tostring(str));

}public static string addgray(int graycode, int n)

return ret;

}}

格雷編碼(python實現)

題目描述 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯...

格雷編碼python實現

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 from typing import list class solution def graycode self,n int...

89 格雷編碼

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...