首页 > 解决方案 > 如何递归地对列表中的每个第 n 个数字求和?

问题描述

我想递归地添加列表中的每个第 n 个数字,但不是第一个数字,所以假设我有一个列表[1, 2, 3, 4, 5, 6],我想添加每个第二个数字,这意味着我需要添加2 + 4 + 6,但如果我想添加每个第三个数字, 那么它应该添加3 + 6.

所以现在我有这么多,我想添加每个第二个数字,这意味着我想添加2,46,但我似乎无法弄清楚为什么它不起作用,我应该怎么做?

def getsum(numbers):
    if len(piece)==0:
        return 0
    else:
        return getsum(numbers[2:]) + numbers[0]  
print getSum([1, 2, 3, 4, 5, 6])

标签: python

解决方案


您可以选择n第 th 个数字,然后在再次调用该函数时递归地切掉所有内容

def get_sum(numbers, n):
    if len(numbers) < n:
        return 0
    return numbers[n-1] + get_sum(numbers[n:], n)

例如分别使用 n = 2 和 n = 3

>>> get_sum([1, 2, 3, 4, 5, 6], 2)    # 2 + 4 + 6
12
>>> get_sum([1, 2, 3, 4, 5, 6], 3)    # 3 + 6
9

推荐阅读