鱼C论坛

 找回密码
 立即注册
查看: 1670|回复: 6

[已解决]Python[课后作业] 第023、024讲递归作业求助

[复制链接]
发表于 2021-5-23 19:32:11 | 显示全部楼层 |阅读模式

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

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

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

print(Dec2Bin(62))
请问 result = ''的作用是什么?是将result变成字符吗?但是后面result = Dec2Bin(dec//2)又是整形,有点不太懂。
有人能解答一下吗?谢谢
最佳答案
2021-5-23 20:04:49
Wzzhxy1 发表于 2021-5-23 20:03
能再请教一个问题吗?

不是只有同种类型才可以用‘+’吗?



调用了函数,是将函数的返回结果赋值给了 result

因为返回结果就是字符串,所以 用 + 号 是在拼接两个字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-23 19:47:05 | 显示全部楼层

result = '' 只是用于初始化 result 变量的,是因为若 if 条件不成立,此时返回 else 里面的内容

若你没有将 result 初始化就会导致 return 返回的是  None,而返回 None 会导致有递归的过程 if 的 result + str(dec%2) 拼接会失败

所以需要初始化, 只要 dec 不为 0 都不会执行 else,直到 dec = 0 才执行 else ,这里 else 就相当于设置递归出口

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

使用道具 举报

 楼主| 发表于 2021-5-23 20:03:37 | 显示全部楼层
Twilight6 发表于 2021-5-23 19:47
result = '' 只是用于初始化 result 变量的,是因为若 if 条件不成立,此时返回 else 里面的内容

若你 ...

能再请教一个问题吗?
result = Dec2Bin(dec//2)
return result + str(dec%2)
不是只有同种类型才可以用‘+’吗?
那为什么‘result = Dec2Bin(dec//2)‘是函数也可以与字符相加?
谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-23 20:04:49 | 显示全部楼层    本楼为最佳答案   
Wzzhxy1 发表于 2021-5-23 20:03
能再请教一个问题吗?

不是只有同种类型才可以用‘+’吗?



调用了函数,是将函数的返回结果赋值给了 result

因为返回结果就是字符串,所以 用 + 号 是在拼接两个字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-23 20:18:04 | 显示全部楼层
Twilight6 发表于 2021-5-23 20:04
调用了函数,是将函数的返回结果赋值给了 result

因为返回结果就是字符串,所以 用 + 号 是在拼 ...

那为什么函数返回结果是字符串?
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-23 20:23:20 | 显示全部楼层
Wzzhxy1 发表于 2021-5-23 20:18
那为什么函数返回结果是字符串?
谢谢


if 返回 result + str(dec%2),而这里的 result 是进行递归了,递归最后出口在 dec = 0 时候,也就是不符合 if 执行 else 所以最终返回的还是字符串

else 返回 result ,函数开始时就初始化为字符串,所以返回 result 也肯定是字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-23 20:33:15 | 显示全部楼层
Twilight6 发表于 2021-5-23 20:23
if 返回 result + str(dec%2),而这里的 result 是进行递归了,递归最后出口在 dec = 0 时候,也就是不 ...

谢谢耐心讲解,懂了!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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