鱼C论坛

 找回密码
 立即注册
查看: 2286|回复: 5

求大神解释下,谢谢哟

[复制链接]
发表于 2017-2-6 20:16:30 | 显示全部楼层 |阅读模式

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

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

x
亲,这是零基础学习python中的第23讲的课后作业哦。题目如下:

0.使用递归编写一个十进制换为二进制的函数(要求使用“除2取余法”,结果与电泳bin()一样返回字符串形式)、

这是小甲鱼老师参考代码:

  1. def Dec2Bin(dec):
  2.     result = ''
  3.    
  4.     if dec:
  5.         result = Dec2Bin(dec//2)
  6.         return result + str(dec%2)
  7.     else:
  8.         return result

  9. print(Dec2Bin(62))
复制代码



我的问题是:我对代码的第6行不理解,请各位大神解释一下 谢谢啦!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-7 09:12:54 | 显示全部楼层
‘+’加号在这应该是‘拼接’的意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-7 09:58:52 | 显示全部楼层
result是指除余后的整数要用于继续对2区余,而str(dec%2)是第一次的余数是最右边的数字所以返回的是
result + str(dec%2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-7 11:20:02 | 显示全部楼层
小茗同学 发表于 2017-2-7 09:58
result是指除余后的整数要用于继续对2区余,而str(dec%2)是第一次的余数是最右边的数字所以返回的是
resul ...

程序是先执行完递归函数的结束条件然后才逐层回溯执行return result  +  str(Dec % 2) 的把?   如果是这样子,那我就懂了,谢谢你啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-7 14:44:40 | 显示全部楼层
若余相思 发表于 2017-2-7 11:20
程序是先执行完递归函数的结束条件然后才逐层回溯执行return result  +  str(Dec % 2) 的把?   如果是这 ...

不算是执行完递归函数后吧,只是每一个递归函数就得到一个余数放到末尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-7 21:12:16 | 显示全部楼层
小茗同学 发表于 2017-2-7 14:44
不算是执行完递归函数后吧,只是每一个递归函数就得到一个余数放到末尾

对,只有当函数回溯逐一执行 return result +str(Dec %  2) 才得一个余数存放在result中,当回溯到62时就返回result字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 05:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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