程式將給定數字的格雷碼轉換為 Python


假設我們有一個數字 n,我們必須找到給定數字的格雷碼(換句話說,即第 n 個格雷碼)。眾所周知,格雷碼是對二進位制數進行排序的一種方式,它使每個連續數字的值相差正好一位。一些格雷碼包括:[0, 1, 11, 10, 110, 111,等等]

因此,如果輸入類似於 n = 12,則輸出將為 10,因為 12 在二進位制表示中為 (1100),對應的格雷碼將為 (1010),其十進位制等效值為 10。

為了解決這個問題,我們將遵循以下步驟

  • 定義一個函式 solve()。它將採用 n
  • 如果 n 等於 0,則
    • return 0
  • x := 1
  • while x * 2 <= n, 執行
    • x := x * 2
  • return 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

更新時間:2020 年 11 月 26 日

763 次瀏覽

開啟你的 職業 生涯

完成課程,獲得認證

開始
廣告