PYTHON列表中数字的递归和

时间:2018-12-11 20:10:46

标签: python python-3.x recursion

def recSum(list):
    if len(list)==0:
         return 0
    else:
         return list[0] + recSum(list[1:])

getSum([1,2,3,4,5])

如何添加一个额外的参数(p)来停止索引p中的递归? 例如具有列表[1,2,3,4,5],而我想要的总和直到index [3]?

2 个答案:

答案 0 :(得分:0)

如果您需要递归执行此操作,请创建一个带有参数的助手,以跟踪您所处的索引:

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])

答案 1 :(得分:0)

如果您想要一个可以在所有生成器上而不只是数组上运行的函数,itertools可以帮助您:

import itertools

def recSum(data, cutoff):
    return sum( itertools.islice(data, cutoff))