鱼C论坛

 找回密码
 立即注册
查看: 1134|回复: 8

[已解决]掉在递归 和 迭代中 迷路了 求指导

[复制链接]
发表于 2018-2-18 15:18:48 | 显示全部楼层 |阅读模式
5鱼币
  1. def add(x):
  2.     list1 = []
  3.     str1 = ""
  4.    
  5.     while x:
  6.         t = x % 2
  7.         x = x // 2
  8.         list1.append(t)
  9.         
  10.     while list1:
  11.         str1 += str(list1.pop())     
  12.     print(str1)
  13.         
  14. add(10)
复制代码

  1. def Dec2Bin(dec):
  2.     result = ""

  3.     if dec:
  4.         result = Dec2Bin(dec//2)
  5.         #print(result)
  6.         return result + str(dec%2)
  7.     else:
  8.         return result
  9.    
  10. print(Dec2Bin(10))
复制代码

result = Dec2Bin(dec//2)  请问 这局 在递归中 每次返回结果是什么样子的
return result + str(dec%2) 请问 这局 在递归中 每次返回结果是什么样子的
最好 递归那个  这两句帮我来个注释 再来个解析过程
最佳答案
2018-2-18 15:18:49
递归有个递归边界,在这里就是当dec=0时,就到了边界
然后想求Dec2Bin(10)就要求Dec2Bin(5),同理
Dec2Bin(10)-->Dec2Bin(5)-->Dec2Bin(2)-->Dec2Bin(1)-->Dec2Bin(0)
意思就是如果知道了Dec2Bin(0)就能求Dec2Bin(1)的值,所以
Dec2Bin(0)-->Dec2Bin(1)-->Dec2Bin(2)-->Dec2Bin(5)-->Dec2Bin(10)
-----------------------------------------------------------
至于返回值就是

  1. Dec2Bin(5) + "0"  #'1010'
  2. Dec2Bin(2) + "1"  #'101'
  3. Dec2Bin(1) + "0"  #'10'
  4. Dec2Bin(0) + "1"  #'1'
复制代码

大致就是这样不知道你能不能看懂

最佳答案

查看完整内容

递归有个递归边界,在这里就是当dec=0时,就到了边界 然后想求Dec2Bin(10)就要求Dec2Bin(5),同理 Dec2Bin(10)-->Dec2Bin(5)-->Dec2Bin(2)-->Dec2Bin(1)-->Dec2Bin(0) 意思就是如果知道了Dec2Bin(0)就能求Dec2Bin(1)的值,所以 Dec2Bin(0)-->Dec2Bin(1)-->Dec2Bin(2)-->Dec2Bin(5)-->Dec2Bin(10) ----------------------------------------------------------- 至于返回值就是 大致就是这样不知道你能不能看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-18 15:18:49 | 显示全部楼层    本楼为最佳答案   
递归有个递归边界,在这里就是当dec=0时,就到了边界
然后想求Dec2Bin(10)就要求Dec2Bin(5),同理
Dec2Bin(10)-->Dec2Bin(5)-->Dec2Bin(2)-->Dec2Bin(1)-->Dec2Bin(0)
意思就是如果知道了Dec2Bin(0)就能求Dec2Bin(1)的值,所以
Dec2Bin(0)-->Dec2Bin(1)-->Dec2Bin(2)-->Dec2Bin(5)-->Dec2Bin(10)
-----------------------------------------------------------
至于返回值就是

  1. Dec2Bin(5) + "0"  #'1010'
  2. Dec2Bin(2) + "1"  #'101'
  3. Dec2Bin(1) + "0"  #'10'
  4. Dec2Bin(0) + "1"  #'1'
复制代码

大致就是这样不知道你能不能看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-18 15:33:08 | 显示全部楼层
你在这两句后面加上print(result)就可以看结果了,自己看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-18 15:59:40 | 显示全部楼层
影-死神 发表于 2018-2-18 15:33
你在这两句后面加上print(result)就可以看结果了,自己看

在return后面加print有用吗,都return了,在后面还能print出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-18 16:17:09 | 显示全部楼层
影-死神 发表于 2018-2-18 15:33
你在这两句后面加上print(result)就可以看结果了,自己看

return  那句  加那里啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-18 16:17:38 | 显示全部楼层
inverseli 发表于 2018-2-18 15:59
在return后面加print有用吗,都return了,在后面还能print出来?

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

使用道具 举报

发表于 2018-2-18 16:48:12 | 显示全部楼层
inverseli 发表于 2018-2-18 15:59
在return后面加print有用吗,都return了,在后面还能print出来?

不会变通?多用一个中间变量不就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-18 16:52:52 | 显示全部楼层
影-死神 发表于 2018-2-18 16:48
不会变通?多用一个中间变量不就行了

我是小学生,不是很懂,望大哥说明白点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-18 17:28:30 | 显示全部楼层
inverseli 发表于 2018-2-18 16:50
递归有个递归边界,在这里就是当dec=0时,就到了边界
然后想求Dec2Bin(10)就要求Dec2Bin(5),同理
Dec2Bi ...

就那个  出来了
123456.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 23:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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