繁体   English   中英

递归求和列表并将其与python中的键进行比较

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM