鱼C论坛

 找回密码
 立即注册
查看: 1586|回复: 11

递归代码运行问题

[复制链接]
发表于 2020-3-31 10:50:25 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 加油fighting 于 2020-3-31 12:05 编辑

原问题:
E[IC6(%$W%M{3T(}TRX6`9V.png

图片方框的代码是怎么运行的?  python代码运行不是从上往下么

按我理解:

result = Dec2Bin(dec//2)    要得出结果得一直运行自身函数 然后再执行return  

所以最后应该 return的是 result = ''

思考后编辑:
FKVM@`0LG7(ZIB9K[ZF)Z6N.png
大概明白流程了,但这样写很不好理解,引用答案中的更好的代码
  1. def Dec2Bin(dec):
  2.     result = ''
  3.     if dec:
  4.         return Dec2Bin(dec//2) + str(dec%2)
  5.     else:
  6.         return result
复制代码

这个更好理解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 11:03:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 11:13:49 | 显示全部楼层
python代码运行不是从上往下么
回去复习函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 11:39:16 | 显示全部楼层
qiuyouzhi 发表于 2020-3-31 11:03
https://fishc.com.cn/thread-159193-1-1.html

我还是没看懂你写的东西,帖子上另外一个人写的代码看懂了,我想知道 result = Dec2Bin(dec//2) 怎么回事
不得先把 等号后面的 Dec2Bin(dec//2) 的值给result 再执行下一段的return么? Dec2Bin(dec//2)一直运行下去最后返回的就是  ''  ,然后执行return result + str(dec%2)   也就是 假设输入9,最后返回了  ''+str(9%2)  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 11:41:01 | 显示全部楼层
加油fighting 发表于 2020-3-31 11:39
我还是没看懂你写的东西,帖子上另外一个人写的代码看懂了,我想知道 result = Dec2Bin(dec//2) 怎么回事 ...

它是分批次返回的,调用了就进去,直到dec等于0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:33:59 | 显示全部楼层
  1. def Dec2Bin(dec):
  2.     result = ''

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


  8. print(Dec2Bin(123))

  9. print('' + str(1 % 2) + str(3 % 2) + str(7 % 2) + str(15 % 2) + str(30 % 2) + str(61 % 2) + str(123 % 2))
复制代码

D:\1.png
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:51:00 From FishC Mobile | 显示全部楼层
raimond 发表于 2020-3-31 12:33

file文件,太秀了
@永恒的蓝色梦想
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:52:30 | 显示全部楼层
_2_ 发表于 2020-3-31 12:51
file文件,太秀了
@永恒的蓝色梦想

他最后还是传上来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:53:07 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-31 12:52
他最后还是传上来了

……呵呵                                                                        
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:53:15 | 显示全部楼层
看来你的问题差不多解决了。
如果对递归那些想更加了解每一步是怎么运行的 这边我建议你可以试试不用IDLE编译器
用PyCharm 进行调试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:53:36 | 显示全部楼层

大家都是大水比
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:54:20 From FishC Mobile | 显示全部楼层
这是个递归啊兄dei
回去好好复习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 21:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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