鱼C论坛

 找回密码
 立即注册
查看: 3286|回复: 12

关于十进制转二进制递归

[复制链接]
发表于 2015-12-1 14:14:58 | 显示全部楼层 |阅读模式
11鱼币
def Dec2Bin(dec):
    result = ''
   
    if dec:
        result = Dec2Bin(dec//2)
        return result + str(dec%2)
    else:
        return result

print(Dec2Bin(62))

能否理解为:
以16为例:
        result = Dec2Bin(dec//2)+str(dec%2)+Dec2Bin((Dec2Bin(dec//2))//2)+str((dec%2)%2)+Dec2Bin(Dec2Bin((Dec2Bin(dec//2))//2))//2+str(((dec%2)%2)%2)+............... 最后 知道dec==0,把dec=0带入以上式子,最后就只剩下str(。。。。。。)
不知道这样理解对吗 求指教


第二个问题  return result + str(dec%2)改为  return str(dec%2)+result  结果顺序会变 这个怎么理解


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-3 10:31:54 | 显示全部楼层
637C11E95733B9754E5719CF00E9C0F9.png
你看看能看懂么?然后 return result + str(dec%2)改为  return str(dec%2)+result ,也是一步一步返回,就会变成0001
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-3 15:35:05 | 显示全部楼层
我这回答有些口水话,希望能耐心看完,如有不对的地方大家可以指出来,我也是新手!

digui.png

以十进制数10作为例子来解释递归问题。首先,进入函数Dec2Bin(10),此时参数dec=10,而result接受的是Dec2Bin(5)的返回值;于是,程序又进入了Dec2Bin(5)的函数体,注意,此时Dec2Bin(10)的函数程序还没有执行完,正在外层程序等待Dec2Bin(5)给它返回result的值呢。在Dec2Bin(5)的函数里,result的值又是Dec2Bin(2)的返回值;于是乎,程序又让Dec2Bin(5)等到起,转而进入Dec2Bin(2)的函数里。在Dec2Bin(2)的函数里,同样有个result的值,它是Dec2Bin(1)的返回值;程序暂停了Dec2Bin(2)继续往下执行,来到了Dec2Bin(1)函数体,然而,Dec2Bin(1)的result的值是Dec2Bin(0)的返回值;正在这时,程序说,Dec2Bin(dec)函数的参数dec为假的时候,执行else语句,即返回result,而此时result就是初始化时的空值,所以,Dec2Bin(0)返回空值给Dec2Bin(1),并被Dec2Bin(1)的result所接受。紧接着,Dec2Bin(1)继续执行没有完成的代码,即:return result+str(dec%2)这条语句,根据Dec2Bin(1)当前的result及dec的值,返回了字符串“1”,这个字符串就传给了还在外层等待的Dec2Bin(2)。以此类推,最终让Dec2Bin(10)这个函数也得到了它的result。

总结:递归就是外层的函数的结果取决于内层函数的相关值,直到内层函数一层一层地把相关的值都返回来为止。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
小甲鱼 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-3 15:46:53 | 显示全部楼层
paomaliuju 发表于 2015-12-3 15:35
我这回答有些口水话,希望能耐心看完,如有不对的地方大家可以指出来,我也是新手!

我感觉没法再详细了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-3 15:51:39 | 显示全部楼层
小甲鱼 发表于 2015-12-3 15:46
我感觉没法再详细了~

继续努力!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-3 18:56:31 | 显示全部楼层
同继续努力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-8 17:28:42 | 显示全部楼层
确实,没法在详细了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-13 17:57:58 | 显示全部楼层
同求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-2 13:24:08 | 显示全部楼层
继续rul
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-16 15:06:17 | 显示全部楼层
paomaliuju 发表于 2015-12-3 15:35
我这回答有些口水话,希望能耐心看完,如有不对的地方大家可以指出来,我也是新手!

看了那么多解释..我就服这个....一下就懂了..只是不明白..为什么return result + str(dec%2)会是反过来执行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-14 14:32:07 | 显示全部楼层
paomaliuju 发表于 2015-12-3 15:35
我这回答有些口水话,希望能耐心看完,如有不对的地方大家可以指出来,我也是新手!

谢谢你的详细解释,我终于看明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-12 14:45:45 | 显示全部楼层
paomaliuju 发表于 2015-12-3 15:35
我这回答有些口水话,希望能耐心看完,如有不对的地方大家可以指出来,我也是新手!

感谢回答 太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-26 18:39:33 | 显示全部楼层
0无返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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