第24讲第二题
各位大佬,代码如下:def get_digits(n):
result=[]
if n>0:
get_digits(n//10) #为什么递归时 result 没有重新被赋值成空集?!
return result.insert(0,n%10)
else:
return result
print(get_digits(123456))
输出结果:
本帖最后由 Twilight6 于 2020-6-7 23:12 编辑
代码错了吧,要改成这样,而且输出结果是倒叙的列表,不是 1,2,3,4,5,6 哦
你返回的是result.insert(0, n % 10) ,而列表的方法大部分都没有返回值,也就是只会返回一个None
result = []
def get_digits(n):
if n > 0:
get_digits(n // 10)
result.insert(0, n % 10)
return result
else:
return result
print(get_digits(123456))
容器类的值只要不对容器本身进行改变,可以直接将元素加入容器内
但是注意不能对本身进行改变,如函数内对result重新赋值为一个列表
Twilight6 发表于 2020-6-7 23:09
代码错了吧,要改成这样,而且输出结果是倒叙的列表,不是 1,2,3,4,5,6 哦
你返回的是result.insert(0 ...
大佬你再看下,这次用字符串为什么return get_digits(n//10)+str(n%10) 时result 没有被重新被赋值为空字符串
>>> def get_digits(n):
result=''
if n>0:
return get_digits(n//10)+str(n%10)
else:
return result
>>> get_digits(123456)
'123456' 吃鲸不放辣 发表于 2020-6-8 19:54
大佬你再看下,这次用字符串为什么return get_digits(n//10)+str(n%10) 时result 没有被重新被赋值为空 ...
不他每次递归确实被重新赋值成空字符串了,只是递归返回时候用 + 号拼接上之前的结果一起返回
所以每次递归的结果都拼接上返回最后的完整字符串
页:
[1]