python - 如何递归地对列表中的每个第 n 个数字求和?
问题描述
我想递归地添加列表中的每个第 n 个数字,但不是第一个数字,所以假设我有一个列表[1, 2, 3, 4, 5, 6]
,我想添加每个第二个数字,这意味着我需要添加2 + 4 + 6
,但如果我想添加每个第三个数字, 那么它应该添加3 + 6
.
所以现在我有这么多,我想添加每个第二个数字,这意味着我想添加2
,4
和6
,但我似乎无法弄清楚为什么它不起作用,我应该怎么做?
def getsum(numbers):
if len(piece)==0:
return 0
else:
return getsum(numbers[2:]) + numbers[0]
print getSum([1, 2, 3, 4, 5, 6])
解决方案
您可以选择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
推荐阅读
- javascript - 无法将序列化数据返回到可引用的 json 对象中
- python - 如何在 python 中将多个 3 维数组更改为单个 4 维数组?
- python - python scrapy检查类是否存在否则检查其他
- django - 在不访问数据库的情况下使用“登录用户”测试视图
- python - 如何将特殊键添加到键盘记录器 python
- android - Dart 中如何从 Https 服务器获取数据
- r - 如何安排 Cronjob 以执行文件中的所有 R 脚本
- reactjs - React Hooks:如何正确干净地使用Ref().current
- talend - 如何与 Talend Job 建立多个连接?
- python - 检查熊猫数据框中的下一个索引列值和相同值的连续长度