DozenPython 发表于 2020-6-25 16:50:50

递归作业的问题

请问为什么
def get_digits(n):
    result = []
    if n == 0:
      return result
    else:
      return get_digits(n//10).append()

print(get_digits(12345))

不行而拼接就可以?
def get_digits(n):
    result = []
    if n == 0:
      return result
    else:
      return get_digits(n//10)+

print(get_digits(12345))
#拼接就能成功运行


Twilight6 发表于 2020-6-25 16:57:07

本帖最后由 Twilight6 于 2020-6-25 16:58 编辑




return get_digits(n//10).append()

列表的大多数方法都没有返回值,返回的是None,导致你 get_digits(n//10) 递归过程中会返回 None 而不是返回一个列表

而 None 不能使用列表的 append 的方法,导致报错

而拼接就可以?

get_digits(n//10)+ 这个返回的是一个列表 所以和你上面的那个不同,这个就可以

而且这个不叫拼接吧,我也不清楚具体叫什么,应该叫合并列表吧,拼接是对字符串而言的




DozenPython 发表于 2020-6-25 17:05:51

Twilight6 发表于 2020-6-25 16:57
列表的大多数方法都没有返回值,返回的是None,导致你 get_digits(n//10) 递归过程中会返回 None ...

感谢您,的确是append方法没有返回值,后面变成NoneType了

Twilight6 发表于 2020-6-25 17:07:00

DozenPython 发表于 2020-6-25 17:05
感谢您,的确是append方法没有返回值,后面变成NoneType了



列表方法remove、append、extend、clear、insert、reverse、sort等 都没有,而 pop 有

心驰神往 发表于 2020-11-3 11:25:03

大佬都解决了
页: [1]
查看完整版本: 递归作业的问题