鱼C论坛

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

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

[复制链接]
发表于 2018-2-18 15:18:48 | 显示全部楼层 |阅读模式
5鱼币
def add(x):
    list1 = []
    str1 = ""
    
    while x:
        t = x % 2
        x = x // 2
        list1.append(t)
        
    while list1:
        str1 += str(list1.pop())     
    print(str1)
        
add(10)
def Dec2Bin(dec):
    result = ""

    if dec:
        result = Dec2Bin(dec//2)
        #print(result)
        return result + str(dec%2)
    else:
        return result
    
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)
-----------------------------------------------------------
至于返回值就是
Dec2Bin(5) + "0"  #'1010'
Dec2Bin(2) + "1"  #'101'
Dec2Bin(1) + "0"  #'10'
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)
-----------------------------------------------------------
至于返回值就是
Dec2Bin(5) + "0"  #'1010'
Dec2Bin(2) + "1"  #'101'
Dec2Bin(1) + "0"  #'10'
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-12-24 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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