binary representation 二進制表示
重複把 n 除以 2 ,然後反向讀取所有的餘數(即:輾轉相除法)
while循環實作:編寫一個 while 循環完成除以 2 的任務,并順序輸出各二進制
def decimal_to_binary_while_loop(n):
s = ''
while n > 0:
s = str(n%2) + s # 取餘後更新 s
n = n//2 # 取整後更新 n
return s
遞歸實作
def decimal_to_binary_recursion(n, result = ''):
if n == 0: return result # 基例
return decimal_to_binary_recursion(n//2, str(n%2) + result) # 遞歸鍊條
'''
遞歸過程示例
eg: decimal_to_binary_recursion(8, '')
--> n == 8
--> decimal_to_binary_recursion(4, '0') # 8//2, str(8%2) + ''
--> n == 4
--> decimal_to_binary_recursion(2, '00') # 4//2, str(4%2) + '0'
--> n == 2
--> decimal_to_binary_recursion(1, '000') # 8//2, str(2%2) + '00'
--> n == 1
--> decimal_to_binary_recursion(0, '1000') # 1//2, str(1%2) + '000'
--> n == 0
--> return '1000' # result == '1000'
--> return '1000' # decimal_to_binary_recursion(1, '000')
--> return '1000' # decimal_to_binary_recursion(2, '00')
--> return '1000' # decimal_to_binary_recursion(4, '0')
--> return '1000' # decimal_to_binary_recursion(8, '')
'''
代碼測試
print(decimal_to_binary_recursion(166)) # >>> 10100110
print(decimal_to_binary_while_loop(167)) # >>> 10100111