鱼C论坛

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

求助关于递归的问题

[复制链接]
发表于 2017-1-8 10:07:40 | 显示全部楼层 |阅读模式
10鱼币
小甲鱼第23讲的作业,简单说就是将输入的转换成列表,比如get_digits(1243)输出结果是[1,2,4,3]。
----------------------以下是我的程序-------------------
def get_digits(n):
    result = []
   
    if n//10 > 0:                                #判断是n是否只剩下各位数
        result.append(n%10)            #将n的最后一位插入列表
        get_digits(n//10)                  #去掉n的最后一位,再次递归
    else:
        result.append(n)                  #如果n只有个位,讲n插入到列表中
        return result


为嘛执行后返回的结果为空呢?
再小改一下,把return放到else分支外边,输出结果就只有最后一位3

感觉if判断里边的result.append(n%10)没有被执行过一样,只是当n//10为0的时候才执行了append。
求助各位前辈,帮我看看问题出在哪里,回答越详细越好。

PS:我知道程序执行后结果是反向的,我们暂时抛开那个不说,先求助为什么没有把4个数字都插入到列表里。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-1-8 13:57:02 | 显示全部楼层
琅玡 发表于 2017-1-8 10:07
你的这个函数写法有问题:
1)把结果列表result定义在函数体内,这样的话,在你每次调用递归函数时,它就 ...

再请教一下
def Dec2Bin(dec):
    result = ''
   
    if dec:
        result = Dec2Bin(dec//2)
        return result + str(dec%2)
    else:
        return result

print(Dec2Bin(62))
这个代码,为什么循环的时候不会把result清空呢?也是定义在函数内部的呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 03:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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