PYTHON递归列表中的数字之和
如何添加一个额外的argumentp来停止索引p中的递归?PYTHON递归列表中的数字之和,python,python-3.x,recursion,Python,Python 3.x,Recursion,如何添加一个额外的argumentp来停止索引p中的递归? 例如,在列表[1,2,3,4,5]中,我想在索引[3]前求和?如果需要递归执行此操作,请创建一个带有参数的帮助器,以跟踪您所在的索引: def recSum(list): if len(list)==0: return 0 else: return list[0] + recSum(list[1:]) getSum([1,2,3,4,5]) 如果您想要一个能够在所有生成器上而不仅仅
例如,在列表[1,2,3,4,5]中,我想在索引[3]前求和?如果需要递归执行此操作,请创建一个带有参数的帮助器,以跟踪您所在的索引:
def recSum(list):
if len(list)==0:
return 0
else:
return list[0] + recSum(list[1:])
getSum([1,2,3,4,5])
如果您想要一个能够在所有生成器上而不仅仅是阵列上运行的函数,itertools有助于:
不要调用变量列表-该名称由构建inslice it:getSum[1,2,3,4,5][:p]-使用,或者将p作为参数提供给函数,并使用助手将其切分,以执行summingdef recSumlst,n:return 0 if not n else lst lst[0]+recSumlst[1:],n-1您已经描述了至少一半的实现。尝试编码并发布该问题。如何编写此问题的解决方案超出堆栈溢出的界限进入教程区域。@coldspeed您的建议有一个问题。
def recSum(list, p):
recSumHelper(list, p, 0)
def recSumHelper(list, p, idx):
if len(list)==0 or idx > p:
return 0
else:
return list[0] + recSumHelper(list[1:], p, idx + 1)
getSum([1,2,3,4,5])
import itertools
def recSum(data, cutoff):
return sum( itertools.islice(data, cutoff))