【发布时间】:2020-03-02 07:25:50
【问题描述】:
那么,如果给定一个整数列表和一个名为 x 的数字,如何递归返回列表中每个第 x 个数字的总和。
在这个任务中,“索引”从 1 开始,所以如果 x = 2 和 nums = [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]
但是当它应该是 0 时会传递像 ([2, 3, 6], 5)) -->> 2 这样的东西。
【问题讨论】: