鱼C论坛

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

[已解决]23.24讲课后题第0题的求助

[复制链接]
发表于 2020-8-3 00:16:51 | 显示全部楼层 |阅读模式

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

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

x
来位大佬讲解下结果是如何出来的,递归函数返回的是一个另一个递归函数和字符串,怎么打印的结果,最好是每步都讲解下,
最佳答案
2020-8-3 00:27:20
本帖最后由 Twilight6 于 2020-8-3 07:19 编辑


直接拿实例举例子试试看能不能懂,当我们转化 10 这个数字时候:

  1. def Dec2Bin(dec):     
  2.     result = ''         # 设置个字符串,每次递归都会重新赋值为一个空字符串,所以这个函数每次 result 最多也只会返回一个字符

  3.     if dec:   # 只要 dec 参数不为 0 ,那么就始终满足 if 条件,进行递归

  4.         result = Dec2Bin(dec // 2)
  5.         # 这里用了递归 Dec2Bin(10)->Dec2Bin(5)->Dec2Bin(2)->Dec2Bin(1)->Dec2Bin(0)

  6.         return result + str(dec % 2)
  7.         # 然后开始返回值 Dec2Bin(0)->Dec2Bin(1)->Dec2Bin(2)->Dec2Bin(5)->Dec2Bin(10)
  8.         # 返回结果是         ''     +   '1'     +   '0'    +  '1'      +    '0'

  9.     else:   # 当 dec 为 0 时,就说明值已经全部求完了,此时直接返回一个 result 作为递归出口
  10.         return result


  11. print(Dec2Bin(10))
复制代码
23.24讲课后题第0题.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-3 00:27:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-3 07:19 编辑


直接拿实例举例子试试看能不能懂,当我们转化 10 这个数字时候:

  1. def Dec2Bin(dec):     
  2.     result = ''         # 设置个字符串,每次递归都会重新赋值为一个空字符串,所以这个函数每次 result 最多也只会返回一个字符

  3.     if dec:   # 只要 dec 参数不为 0 ,那么就始终满足 if 条件,进行递归

  4.         result = Dec2Bin(dec // 2)
  5.         # 这里用了递归 Dec2Bin(10)->Dec2Bin(5)->Dec2Bin(2)->Dec2Bin(1)->Dec2Bin(0)

  6.         return result + str(dec % 2)
  7.         # 然后开始返回值 Dec2Bin(0)->Dec2Bin(1)->Dec2Bin(2)->Dec2Bin(5)->Dec2Bin(10)
  8.         # 返回结果是         ''     +   '1'     +   '0'    +  '1'      +    '0'

  9.     else:   # 当 dec 为 0 时,就说明值已经全部求完了,此时直接返回一个 result 作为递归出口
  10.         return result


  11. print(Dec2Bin(10))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 06:58:59 | 显示全部楼层

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
雪蝶宿秋风 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-8-3 12:15:01 | 显示全部楼层
Twilight6 发表于 2020-8-3 00:27
直接拿实例举例子试试看能不能懂,当我们转化 10 这个数字时候:

大佬  这里的返回结果为啥是从Dec2bin(0)开始的 而不是从Dec2bin(10)开始的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-3 12:17:10 | 显示全部楼层
zltzlt 发表于 2020-8-3 06:58
请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=167696&ctid=1730

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

使用道具 举报

发表于 2020-8-3 12:17:26 | 显示全部楼层
雪蝶宿秋风 发表于 2020-8-3 12:15
大佬  这里的返回结果为啥是从Dec2bin(0)开始的 而不是从Dec2bin(10)开始的呢



因为你进入递归 返回时候就要从最里面开始返回,就好比你打开文件夹

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

使用道具 举报

 楼主| 发表于 2020-8-3 12:21:32 | 显示全部楼层
Twilight6 发表于 2020-8-3 12:17
因为你进入递归 返回时候就要从最里面开始返回,就好比你打开文件夹

好的 懂了  谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 23:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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