为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解二进制表示函数的递归

如何理解二进制表示函数的递归

12345678_0001 2021-05-13 18:05:11
我跟踪了以下代码,其中一部分对我来说没有意义:def bin_rep(n: int) -> str:     """Return the binary representation of n     >>> bin_rep(0)     "0"     >>> bin_rep(1)     "1"     >>> bin_rep(5)     "101"     """     if n > 1:         return bin_rep(n // 2) + bin_rep(n % 2)     else:         return str(n)我不了解的部分是,为什么要添加bin_rep(n//2)和bin_rep(n%2)。我知道没有添加项将无法正常工作,但是我无法解决为什么存在添加项的问题。
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

bin_rep(n)返回的二进制字符串表示形式n。


终止条件n <= 1是bin_rep(0) -> '0'或bin_rep(1) -> '1'。


bin_rep(2)必须返回'10'。为此,它计算:


bin_rep(2 // 2) + bin_rep(n % 2)

bin_rep(1) + bin_rep(0)

'1' + '0'  # String concatenation, not decimal addition!

'10'

...这是正确的答案。那应该有助于清除您的理解。


查看完整回答
反对 回复 2021-05-25
?
千巷猫影

TA贡献1829条经验 获得超7个赞

那不是加法。 bin_rep返回一个字符串。+字符串类型的运算符是串联。阅读为


binary representation of n right-shifted a bit

    concatenated with

binary representation of n's right-most bit

这样可以清除吗?


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号