我想用一个递归函数,总结数字,即Python中,得到数字列表的总和与递归
getSum([1, 2, 3, 4, 5])
应该返回1 + 2 + 3 + 4 + 5 = = 15
我不是递归函数的专家,我试过类似的东西:
def getSum(piece):
for i in piece
suc += getSum(i)
问题是我无法循环整数。我相信这是一项相当简单的任务,但我真的无法弄清楚。
我想用一个递归函数,总结数字,即Python中,得到数字列表的总和与递归
getSum([1, 2, 3, 4, 5])
应该返回1 + 2 + 3 + 4 + 5 = = 15
我不是递归函数的专家,我试过类似的东西:
def getSum(piece):
for i in piece
suc += getSum(i)
问题是我无法循环整数。我相信这是一项相当简单的任务,但我真的无法弄清楚。
你不需要循环。递归会为你做到这一点。
def getSum(piece):
if len(piece)==0:
return 0
else:
return piece[0] + getSum(piece[1:])
print getSum([1, 3, 4, 2, 5])
你也可以使用reduce。 函数reduce(func,seq)将函数func()连续应用于序列seq。它返回一个单一的值。
reduce(lambda x,y: x+y, range(1,6))
为学术目的(学习Python的),你可以使用递归:
def getSum(iterable):
if not iterable:
return 0 # End of recursion
else:
return iterable[0] + getSum(iterable[1:]) # Recursion step
但你不应该在真正的生产代码中使用递归。这样做效率不高,而且使用内置插件的代码也不太清晰。对于这种情况,你不需要递归和循环。只需使用内置sum:
>>>a = [1, 2, 3, 4, 5]
>>>sum(a)
15
我认为这是不明确的检查长度更好一点:
def getSum(piece):
return piece[0] + getSum(piece[1:]) if piece else 0
演示:
>>> getSum([1, 2, 3, 4, 5])
15
如果我要检查和什么每次调用函数getSum之后?所以我想检查一下fe如果总和> 9:做些什么? –
不适用于空列表。 – uselpa
有没有要测试的长度== 1. – uselpa