qian123qian 发表于 2022-3-25 06:32:05

作业不懂请帮忙解释一下,谢谢

def Dec2Bin(dec):
    result = ''
   
    if dec:
      result = Dec2Bin(dec//2)
      return result + str(dec%2)
    else:
      return result

print(Dec2Bin(62))

大马强 发表于 2022-3-25 08:00:03

十进制转二进制,而且还是递归的算法
简单的递归程序你拿个纸笔,带个简单的值跟着走一遍,就能理解了

递归要有【递】和【归】,归是结束条件
这个代码【递】那就是 result = Dec2Bin(dec//2)
而 return result 和 return result + str(dec%2) 充当【归】
前者是第一次的【归】,也是【归】的开始,此后就执行 return result + str(dec%2)

比如代值为 3,代码的执行顺序是
Dec2Bin(3//2)
Dec2Bin(1//2)
return result=> ''
return result + str(dec%2)=> '' + str(1%2) => '1'
return result + str(dec%2)=> '1' + str(3%2) => '11'
结果就是 '11'

页: [1]
查看完整版本: 作业不懂请帮忙解释一下,谢谢