鱼C论坛

 找回密码
 立即注册
查看: 2534|回复: 4

关于23,24课后的几个问题。

[复制链接]
发表于 2014-7-4 00:52:53 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 swl19880916 于 2014-7-4 23:55 编辑

第一次提问,希望鱼油朋友们给予我小鱼油递归技术的提高。
  1. def Dec2Bin(dec):
  2.     result = ''#第一个result

  3.     if dec:
  4.         result = Dec2Bin(dec//2)#第二个result
  5.         return result + str(dec%2)#第三个result,这三个result变量各自表示的是什么含义?
  6.     else:
  7.         return result
  8. print(Dec2Bin(62))
复制代码


result 变量有几个意思?
然后十进制转二进制的过程是怎么完成的?还是不清楚。。



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

使用道具 举报

发表于 2014-7-4 13:27:51 | 显示全部楼层

回帖奖励 +1 鱼币

亲,搞不懂你想问什么哦?你可以先运行一下代码,贴出结果,然后仔细说明你的问题哦!{:7_174:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-6 21:25:04 | 显示全部楼层
本帖最后由 swl19880916 于 2014-7-11 01:03 编辑
~风介~ 发表于 2014-7-4 13:27
亲,搞不懂你想问什么哦?你可以先运行一下代码,贴出结果,然后仔细说明你的问题哦!

还是不懂我的意思吗?简单点,就是问一下这个小甲鱼老师写的程序,二进制转十进制是怎么完成的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-6 22:00:00 | 显示全部楼层
  1. def Dec2Bin(dec):
  2.     result = ''
  3.     if dec:
  4.         result = Dec2Bin(dec//2)
  5.         print(result,'n')
  6.         print(str(dec%2),'ni')
  7.         tmp = result + str(dec%2)
  8.         print(tmp,'nic')
  9.         return tmp
  10.     else:
  11.         print(result,'nico')
  12.         return result
  13. print(Dec2Bin(62))
复制代码
  1. >>>
  2. nico
  3. n
  4. 1 ni
  5. 1 nic
  6. 1 n
  7. 1 ni
  8. 11 nic
  9. 11 n
  10. 1 ni
  11. 111 nic
  12. 111 n
  13. 1 ni
  14. 1111 nic
  15. 1111 n
  16. 1 ni
  17. 11111 nic
  18. 11111 n
  19. 0 ni
  20. 111110 nic
  21. 111110
  22. >>>
复制代码

56.png

亲,打字太麻烦啦,希望你可以看懂图~{:7_181:}

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

使用道具 举报

 楼主| 发表于 2014-7-11 00:42:10 | 显示全部楼层
本帖最后由 swl19880916 于 2014-7-11 01:25 编辑

我问一下,你那个图是不是百分百正确的?我似乎没看懂,为什么它会反过来,因为栈的缘故吗?
为什么result会打印多个1,他只是函数的变量哦。经过我几天探索,我现在的理解是:因为函数被递归了,所以它会在栈中先跑完函数,然后不会打印,直到dec为0后,跑else,最后的return result是因为前面if语句中的函数跑完了,里面的result变量为none了,所以必须在跑完后的else :下,return result ,赋值给if语句 中的result 。因为如果递归函数跑完了所有条件,最后会执行一次打印。打印过程中只有条件返回值和变量的返回值。result 就成了 result = result + str(dec%2)了,然后一共会执行6次result = result +str(dec%2),最后合起来就是最后的result + str(dec%2)。我的理解是这样的,不知道是不是这样,还请大家给我提示哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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