我正在尝试使用递归回溯解决子集总和问题。如果我立即打印结果可以使用,但是如果我尝试返回结果,它似乎无法使用。 这里是python中的代码。我添加了中间打印语句以使事情变得更容易(请取消注释):
l = [int(i) for i in input().split()]
num = int(input())
#print(num)
#print(l)
def subset(l):
tot = 0
ch = []
return(subsetHelper(l,tot,num,ch))
def subsetHelper(l,tot,num,ch):
#print("("+str(l)+" "+str(tot)+" "+str(num)+" "+str(ch)+")")
if(tot==num):
return(ch)
elif(tot>num or len(l)==0):
return
else:
ch.append(l[0])
return subsetHelper(l[1:],tot+l[0],num,ch)
del ch[-1]
return subsetHelper(l[1:],tot,num,ch)
print(subset(l))
当我打印结果而不返回结果时,相同的概念也起作用。
l = [int(i) for i in input().split()]
num = int(input())
#print(num)
#print(l)
def subset(l):
tot = 0
ch = []
subsetHelper(l,tot,num,ch)
def subsetHelper(l,tot,num,ch):
#print("("+str(l)+" "+str(tot)+" "+str(num)+" "+str(ch)+")")
if(tot==num):
print(ch)
elif(tot>num or len(l)==0):
#return "Hello"
return
else:
ch.append(l[0])
subsetHelper(l[1:],tot+l[0],num,ch)
del ch[-1]
subsetHelper(l[1:],tot,num,ch)
subset(l)
有什么建议吗?