[英]Recursively sum a list and compare it to a key in python
我需要编写一个递归函数sums_to(nums,k),该函数接受一个整数列表,如果列表中所有元素的总和等于k,则返回True,否则返回False。
我不能以任何形式使用sum函数,也不能对列表求和,然后最后检查它是否等于k。 另外,我必须将sums_to编写为单个递归函数。
到目前为止,我有这个:
def sums_to(nums, k):
if nums == []:
if k == 0
return True
return 0
else:
return nums[0] + sums_to(nums[1:], k) == k
您的方法似乎不正确,特别是递归步骤不正确-您必须减小期望的k
值,直到我们到达列表的末尾(此时仅测试k
!),而不是添加/比较在列表的每个点。 此外,基本情况缺少某些内容-如果k
不为零会发生什么? 您应该返回False
而不是0
。 最好试试这个:
def sums_to(nums, k):
if nums == []:
return k == 0
else:
return sums_to(nums[1:], k - nums[0])
它按预期工作:
sums_to([1, 2, 3, 4, 5], 14)
=> False
sums_to([1, 2, 3, 4, 5], 16)
=> False
sums_to([1, 2, 3, 4, 5], 15)
=> True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.