递归地对列表求和,并将其与python中的键进行比较
我需要编写一个递归函数sums_to(nums,k),它接受一个整数列表,如果列表中所有元素的和等于k,则返回True,否则返回False 我不能以任何形式使用sum函数,也不能对列表求和,然后在最后检查它是否等于k。此外,我必须将和作为单个递归函数写入 到目前为止,我有:递归地对列表求和,并将其与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:
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您的意思是什么?发布示例输入和预期输出。