Python 如何通过递归得到一系列数字的和?
我想用递归函数求和,即Python 如何通过递归得到一系列数字的和?,python,recursion,Python,Recursion,我想用递归函数求和,即 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
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
但您不应该在实际的生产代码中使用递归。与使用内置程序相比,它效率不高,代码也不那么清晰。对于这种情况,既不需要递归也不需要循环。只需使用内置的:
我认为如果不明确检查长度,会更好一些:
def getSum(piece):
return piece[0] + getSum(piece[1:]) if piece else 0
演示:
或者,以一种更“蟒蛇式”的方式:
输出:5050使用递归和pop函数
def getSum(piece):
return piece.pop() + getSum(piece) if piece else 0
如果每次调用函数getSum后我都要检查sum呢?所以我想检查f.e.如果sum>9:做点什么?但是我必须用递归来做:PDon不要用生产代码中的递归来做。出于学术目的,它可以,但不要在现实生活中点画。uselpa,谢谢,修复了。
>>> getSum([1, 2, 3, 4, 5])
15
suml = lambda l: l[0] + suml(l[1:]) if l else 0
print(suml(range(101)))
def getSum(piece):
return piece.pop() + getSum(piece) if piece else 0