我想使用递归来计算列表值的总和,但是在使用sum2函数时会出错:TypeError:不支持的操作数类型+:' int'和' NoneType'
def sum(list):
if list == []:
return 0
else:
return list[0] + sum(list[1:])
print(sum([1,2,3]))
def sum2(list):
if list == []:
return 0
else:
print(list[0] + sum(list[1:]))
sum([1,2,3])
答案 0 :(得分:1)
print()
通过标准输出将输出发送到控制台。 return
将输出发送到任何调用函数的函数。如果要使用递归,则需要使用return语句,而不是print()
。
以下是一个例子:
def sum2(l):
if l == []:
return 0
else:
return l[0] + sum2(l[1:])
sum2([1, 2, 3])
# 6
这是递归的,因为return语句包含对函数本身的调用。一般来说,在计算机科学课上学习是件好事,但在生产代码中却是一件坏事。
答案 1 :(得分:0)
我不了解你的要求是什么,通过查看你的代码,但据我所知,你需要知道打印和返回之间的区别。
print
是一个需要打印描述和打印变量或对象的函数。此函数将帮助开发人员调试和检查控制台输出。其中return
是一个关键字,这将在任何函数或方法中用于将该函数或方法的某些值返回给它的调用者。