[英]Using Recursion to check for sum of tuples in a list
我有一個函數,它接受一個元組列表,每個元組包含兩個項目:項目名稱和值。 如果可以將元組列表分成兩個相等的值組,我需要 func 返回 True,否則返回 False。 function 應該是遞歸的並且不應該使用任何循環。
例如,
func([('tree', 500), ('keyboard', 200), ('pen', 300)])
應該是True
,因為keyboard + pen = tree 的值可以分成兩個相等的組。
到目前為止,我設法寫的是:
def func(lst):
if len(lst) == 1 or len(lst) == 0:
return False
elif len(lst) == 2:
if lst[0][1] != lst[1][1]:
return False
else:
return True
但它只涵蓋基本情況。 任何幫助將不勝感激。
對於大列表不是很有效,但我認為它是遞歸的,因為學校工作:
def divide(lst, left_sum, right_sum):
# if no more elements,
# then it is true if left_sum == right_sum else false
if not lst:
return left_sum == right_sum
obj, value = lst[0]
# element can go either left or right
return divide(lst[1:],left_sum + value, right_sum) or divide(lst[1:],left_sum, right_sum+value)
assert divide([('tree', 500), ('keyboard', 200), ('pen', 300)],0,0)
assert not divide([('tree', 500), ('keyboard', 200), ('pen', 301)],0,0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.