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

递归地对列表求和,并将其与python中的键进行比较,python,recursion,Python,Recursion,我需要编写一个递归函数sums_to(nums,k),它接受一个整数列表,如果列表中所有元素的和等于k,则返回True,否则返回False 我不能以任何形式使用sum函数,也不能对列表求和,然后在最后检查它是否等于k。此外,我必须将和作为单个递归函数写入 到目前为止,我有: def sums_to(nums, k): if nums == []: if k == 0 return True return 0 else:

我需要编写一个递归函数sums_to(nums,k),它接受一个整数列表,如果列表中所有元素的和等于k,则返回True,否则返回False

我不能以任何形式使用sum函数,也不能对列表求和,然后在最后检查它是否等于k。此外,我必须将和作为单个递归函数写入

到目前为止,我有:

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

您的方法似乎不正确,尤其是递归步骤不正确-您必须降低预期的
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

您的方法似乎不正确,尤其是递归步骤不正确-您必须降低预期的
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

您的方法似乎不正确,尤其是递归步骤不正确-您必须降低预期的
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

我已努力修复您的缩进,这似乎粘贴到了问题中错误-请确认我所做的符合您的意图。我已努力修复您的缩进,似乎粘贴到问题中的内容是错误的-请确认我所做的与您的意图相符。我已努力修复您的缩进,似乎粘贴到问题中的内容是错误的-请确认我所做的与您的意图相符。我已努力修复您的缩进,这似乎粘贴到问题中是错误的-请确认我所做的与您的预期相符。您能为3个数字添加此操作吗?@DataTx您的意思是什么?发布示例输入和预期输出。您能为3个数字添加此操作吗?@DataTx您的意思是什么?发布示例输入和预期输出。您能为3个数字添加此操作吗?@DataTx您的意思是什么?发布示例输入和预期输出。您能为3个数字添加此操作吗?@DataTx您的意思是什么?发布示例输入和预期输出。