鱼C论坛

 找回密码
 立即注册
查看: 1080|回复: 3

[已解决]第023、024讲课后作业的小疑问

[复制链接]
发表于 2019-9-17 15:06:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#使用递归编写一个十进制转换为二进制的函数
0.自己写的:
def Dec2Bin(dec,result=""):
    if dec:
        return Dec2Bin(dec//2,str(dec%2)+result)
    else:
        return result
   
print(Dec2Bin(4))

1.甲鱼老湿的答案:
def Dec2Bin(dec):
    result = ''
   
    if dec:
        result = Dec2Bin(dec//2)
        return result + str(dec%2)
    else:
        return result

print(Dec2Bin(4))

对于两个划线处,我自己的我能理解,但为什么老湿的代码是“result + str(dec%2)”而不是 “str(dec%2)+result”呢?
按照我的理解,老湿的代码输出的结果print(Dec2Bin(4))应该是001才对,怎么会是100呢?
头晕。。。求大佬解说。

最佳答案
2019-9-17 16:37:11
本帖最后由 facevoid 于 2019-9-17 16:45 编辑

十进制4对应的二进制是100

小甲鱼的代码其实从低位往高位算。

比如计算27,因为是个奇数最后一位肯定是1,在代码里第一次运行你会发现27%2=1,这就是最后一位1的来源,

然后算出来一个商是13继续丢给这个程序,发现13%2=1,所以27的倒数第二位也是1.

以此类推前面几位也是这么来的
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-17 15:08:22 | 显示全部楼层
忘记加鱼币奖励了。。。能补的话,愿意补1个鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-17 16:37:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 facevoid 于 2019-9-17 16:45 编辑

十进制4对应的二进制是100

小甲鱼的代码其实从低位往高位算。

比如计算27,因为是个奇数最后一位肯定是1,在代码里第一次运行你会发现27%2=1,这就是最后一位1的来源,

然后算出来一个商是13继续丢给这个程序,发现13%2=1,所以27的倒数第二位也是1.

以此类推前面几位也是这么来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-17 17:09:39 | 显示全部楼层
facevoid 发表于 2019-9-17 16:37
十进制4对应的二进制是100

小甲鱼的代码其实从低位往高位算。

谢谢,我看明白了,还是因为对递归的理解不够。
感觉我写的代码不是那么的“递归”,老湿写的才是真正的递归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 23:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表