递归函数,用于对列表中的元素求和

时间:2017-07-23 11:08:31

标签: python-3.x

即使它看起来并不困难,但它让我发疯。 我甚至无法接近答案。 你能帮我个忙吗?

编写一个递归函数-g,它接受​​一个整数列表并返回sums_to(nums, k) 列表中所有元素的总和等于True,否则返回k。 例如:

False

注意:您允许以任何形式使用任何python sum函数,也不能对列表求和,然后在 结束检查它是否等于k。此外,您必须将sums_to编写为单个递归函数: 也就是说,您可能不使用main函数和递归辅助函数。

>>> nums = [1, 2, 3]
>>> sums_to(nums, 6)
True
>>> sums_to(nums, 5)
False
>>> sums_to([], 1)
False

这是我到目前为止所尝试的。

2 个答案:

答案 0 :(得分:1)

可悲的是,我想不出一丝暗示。整个问题是关于返回声明:

def sums_to(nums, k):
    if not nums:
        return k == 0
    return sums_to(nums[:-1], k - nums[-1])

print(sums_to([1, 2, 3], 6))
print(sums_to([1, 2, 3], 5))
print(sums_to([], 1))

答案 1 :(得分:1)

您可以使用递归执行此操作,如果列表为空,则有两种情况:

def sums_to(nums , n):
  if len(nums) == 0:
    return n == 0
  else:
    m = nums[0]
    nums.pop(0)
    return sums_to(nums, (n-m))

print(sums_to([2,3], 5))