天天看點

python十進制轉二進制_python 遞歸與非遞歸實作十進制轉二進制

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