如果给定一个整数列表和一个称为x的数字,如何递归返回列表中每个第x个数字的和

代码大师

因此,如果给定一个整数列表和一个称为x的数字,该如何递归返回列表中每个第x个数字的和。

在此任务中,“索引”从1开始,因此,如果x = 2nums = [2, 3, 4, -9],输出应为-6(3 + -9)。

X也可以是负数,在这种情况下,索引将从列表的末尾开始,请参见下面的示例。

如果为x = 0,则总和也应0为。

例如:

print(x_sum_recursion([], 3))  # 0
print(x_sum_recursion([2, 5, 6, 0, 15, 5], 3))  # 11
print(x_sum_recursion([0, 5, 6, -5, -9, 3], 1))  # 0
print(x_sum_recursion([43, 90, 115, 500], -2))  # 158
print(x_sum_recursion([1, 2], -9))  # 0
print(x_sum_recursion([2, 3, 6], 5))  # 0
print(x_sum_recursion([6, 5, 3, 2, 9, 8, 6, 5, 4], 3))  # 15

我一直在尝试连续5个小时执行此功能!!!

想看看别人如何解决这个问题。

这是我想出的最好的。

def x_sum_rec_Four(nums: list, x: int) -> int:
    if len(nums) == 0:
        return 0
    elif len(nums) < x:
        return 0
    elif x > 0:
        i = x - 1
        return nums[i] + x_sum_rec_Four(nums[i + x:], x)
    elif x < 0:
        return x_sum_rec_Four(nums[::-1], abs(x))

我的递归问题是完成返回应该是:

if len(nums) < x:
    return nums[0]

但这会传递诸如([2, 3, 6], 5)) -->> 2应为0的信息。

莫德

如果您确实需要递归执行此操作,则可以在每次调用之前从列表中弹出x-1元素,请遵循以下注释:

def x_sum_recursion(nums, x):
    # if x is negative, call the function with positive x and reversed list
    if x < 0:
        return x_sum_recursion(nums[::-1], abs(x))
    # base case for when x is greater than the length of the list
    if x > len(nums):
        return 0
    # otherwise remove the first x-1 items
    nums = nums[x-1:]
    # sum the first element and remove it from the next call
    return nums[0] + x_sum_recursion(nums[1:], x)

print(x_sum_recursion([], 3))  # 0
print(x_sum_recursion([2, 5, 6, 0, 15, 5], 3))  # 11
print(x_sum_recursion([0, 5, 6, -5, -9, 3], 1))  # 0
print(x_sum_recursion([43, 90, 115, 500], -2))  # 158
print(x_sum_recursion([1, 2], -9))  # 0
print(x_sum_recursion([2, 3, 6], 5))  # 0
print(x_sum_recursion([6, 5, 3, 2, 9, 8, 6, 5, 4], 3))  # 15

但是,您可以通过一种简单而Python的方式来实现:

print(sum(nums[x-1::x] if x > 0 else nums[x::x]))

说明:

您可以使用以下方式对列表进行切片:将nums[start:end:increment]结尾保留为空,它将从起始位置开始进行切片,直到列表末尾,然后按指定的增量递增

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

给定一个整数列表和一个整数k,返回是否可以将k构造为该列表中任何数字的和或其乘积

给定一个列表,我如何构造一个新列表,以使新列表的每个元素都是旧列表中每两个数字的和?

如何创建一个函数,该函数生成一个整数序列的无限列表,该整数列表用两个初始数字X_0和X_1递归定义

如何在 Python 中创建一个接受数字和整数列表的函数?

在浮点数和整数列表中找到上一个数字

在LUA中获取一个范围之间的随机数列表,但每个数字允许x组重复项

如何设计一个函数,从给定列表中的每个数字中减去 2?

如何从给定列表中返回一个数字列表,该列表将目标数字设为 0?

LISP函数,给定一个数字和一个列表,返回大于n的第一个偶数

Python:如何计算给定数字的各个部分的组合,给出数字,列表长度,第一个和最后一个数字

获取0和1列表中每个重复数字块的第一个数字

Haskell对的一个数字和列表

如果第一个数字和长度相同,则从列表中删除数字

Haskell-一个无限列表,可被给定列表的每个数字整除

给定一个整数列表,我如何检查是否有可能获得 2 个等和的子列表?

将整数列表转换为一个数字?

如何根据每个组的开始和完成阶段返回一个数字?

给出一个炸弹列表,每个地雷有 3 个数字,x、y 坐标和爆炸范围。找到最终可以引爆最多地雷的初始地雷

如何将列表中的每个元素乘以一个数字?

如何为列表中的每个值获取一个数字?

将列表的每个元素乘以一个数字

给定一个整数列表和一个索引列表,我该如何使用map将10添加到第一个列表中的特定元素?

Python将列表中的每个数字视为一个单独的数字

在列表中找到一个数字,该数字和列表都存储在pandas单元格中

查找升序列表中降序的第一个和最后一个数字

返回列表的第一个数字

如何提高:两个和给定一个整数数组,返回两个数字的索引...使用角度

在x%的相似数字列表中找到一个数字

列表理解以查找列表中每个数字的所有倍数小于一个数字