鱼C论坛

 找回密码
 立即注册
查看: 2086|回复: 5

[已解决]递归好难啊

[复制链接]
发表于 2020-5-31 09:57:12 | 显示全部楼层 |阅读模式

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

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

x
1、十进制转化为2进制
def Dec2Bin(dec):
    result = ''     #不懂这个是什么用
   
    if dec:
        result = Dec2Bin(dec//2)     #这是取2,如果是8(10),2进制不是1×2*3,所以应该是1000,那除2,不就是4而已,就算再循环也是4//2=2,2//2=1
        return result + str(dec%2)       #上面求出了4,加个字符转义什么余数什么用,是只有这一步是在递归吗
    else:
        return result

print(Dec2Bin(8))

2、列表如下
result = []      #这个是起列表作用?还是只是递归后,加个[]而已
def get_digits(n):
        if n > 0:
                result.insert(0, n%10)        #为什么位置参数是0,那不是都是在前面插入么,明明求的是余数,余数不是都在后面吗
                get_digits(n//10)

get_digits(12345)
print(result)

最佳答案
2020-5-31 10:09:20
result = ''     #不懂这个是什么用
这个是等于把变量初始化,后面递归得到结果依次拿去拼接上
得到最后的result,因为最后一次递归并不会进入if条件,而进入else 如果你没初始化就会报错

result = Dec2Bin(dec//2)     #这是取2,如果是8(10),2进制不是1×2*3
所以应该是1000,那除2,不就是4而已,就算再循环也是4//2=2,2//2=1
我看不懂你问题里的 8(10)。。。但是就是把 dec 的值地板除2,然后进入递归

return result + str(dec%2)       #上面求出了4,加个字符转义什么余数什么用,是只有这一步是在递归吗
上一步在递归了,不是这一步,这一步是每次递归的结果相互拼接起来



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

使用道具 举报

发表于 2020-5-31 10:08:17 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2020-5-31 10:09:20 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

result = ''     #不懂这个是什么用
这个是等于把变量初始化,后面递归得到结果依次拿去拼接上
得到最后的result,因为最后一次递归并不会进入if条件,而进入else 如果你没初始化就会报错

result = Dec2Bin(dec//2)     #这是取2,如果是8(10),2进制不是1×2*3
所以应该是1000,那除2,不就是4而已,就算再循环也是4//2=2,2//2=1
我看不懂你问题里的 8(10)。。。但是就是把 dec 的值地板除2,然后进入递归

return result + str(dec%2)       #上面求出了4,加个字符转义什么余数什么用,是只有这一步是在递归吗
上一步在递归了,不是这一步,这一步是每次递归的结果相互拼接起来



评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
liuzhengyuan + 5 + 5 + 3

查看全部评分

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

使用道具 举报

发表于 2020-5-31 10:13:35 | 显示全部楼层
result = []      #这个是起列表作用?还是只是递归后,加个[]而已
同上题,变量赋值为空字符串、字典、列表等大部分都是为了初始化数值,为后面代码做准备条件,否则会报错NameError

result.insert(0, n%10)        #为什么位置参数是0,那不是都是在前面插入么,明明求的是余数,余数不是都在后面吗
去了解下除二取余法算二进制:
例如:
把89化为二进制的数
89÷2=44 余1
44÷2=22 余0
22÷2=11 余0
11÷2=5 余1
5÷2=2 余1
2÷2=1 余0
1÷2=0 余1
然后把余数由下往上排序
1011001(2)
这样就把89化为二进制的数了
——转至百度百科
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 10:28:41 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2020-5-31 19:58:48 | 显示全部楼层
看这个吧,有详细解释:戳我前进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 16:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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