即使它看起来并不困难,但它让我发疯。 我甚至无法接近答案。 你能帮我个忙吗?
编写一个递归函数-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
这是我到目前为止所尝试的。
答案 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))