C 遞迴生成格雷碼

2021-07-05 03:43:47 字數 663 閱讀 1885

一、格雷碼(gray code)是乙個數列集合,每個數使用二進位來表示,假設使用n位元來表示每個數字,任兩個數之間只有乙個位元值不同。

例如以下為3位元的格雷碼:

000001

011010

110

111101

100 

如果要產生n位元的格雷碼,那麼格雷碼的個數為2^n.

除了最高位(左邊第一位),格雷碼的位元完全上下對稱(看上面列表),因此可以採用遞迴的方式實現格雷碼生成。

二、方法思想

第一步:產生 0, 1 兩個字串。

第二步:在第一步的基礎上,每乙個字串都加上0和1,但是每次只能加乙個,所以得做兩次。這樣就變成了 00,01,11,10 (注意對稱)。

第三步:在第二步的基礎上,再給每個字串都加上0和1,同樣,每次只能加乙個,這樣就變成了 000,001,011,010,110,111,101,100。

好了,這樣就把3位元格雷碼生成好了。

三、c++**:

#includeusing namespace std;

char** graycode(int n)

cout<}

return 0;

}

遞迴生成格雷碼

遞迴生成格雷碼 當n 1時,當n 2時,當n 3時,n位格雷碼共有2 n個元素。其中每個元素是 n 1 位的格雷碼前面加0,然後再反向後前面加1生成的。如n 3可由n 2進行兩步操作後得到 1.在n 2的格雷碼前面加0,生成 000,001,011,010 2.在n 2的格雷碼逆序後前面加1,生成 ...

生成格雷碼C

題目描述 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 返回的格雷碼個數一共為2 n,2的n次方 例如 n 1,返回 ...

生成格雷碼

程式設計題 生成格雷碼 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 思想 用遞迴法實現,把求n位格雷碼分解為求n 1...