本帖最后由 jackz007 于 2022-9-23 14:35 编辑
递归过程在 dec = 0 的时候到底,当 dec = 5 的时候,总共需要递归 4 次,其详细过程为: 第1次:dec2bin(5) = dec2bin(5 // 2) + str(5 % 2) = dec2bin(2) + '1'
第2次:dec2bin(2) = dec2bin(2 // 2) + str(2 % 2) = dec2bin(1) + '0'
第3次:dec2bin(1) = dec2bin(1 // 2) + str(1 % 2) = dec2bin(0) + '1'
第4次:dec2bin(0) = ''
递归过程到了 dec2bin(0) 的时候,终于有了确切的结果 dec2bin(0) = '',代入 dec2bin(1), dec2bin(1) = dec2bin(0) + '1' = '' + '1' = '1' ,代入 dec2bin(2),dec2bin(2) = dec2bin(1) + '0' = '1' + '0' = '10',最后,代入 dec2bin(5),dec2bin(5) = dec2bin(2) + '1' = '10' + '1' = '101'。
把这个过程写成一个等式那就是:dec2bin(5) = dec2bin(2) + '1' = dec2bin(1) + '0' + '1' = dec2bin(0) + '1' + '0' + '1' = '' + '1' + '0' + '1' = '101'
函数 dec2bin() 可以简化成只有 1 条语句def dec2bin(dec):
return dec2bin(dec // 2) + str(dec % 2) if dec > 0 else ''
|