问题
我知道在我的功能的某个地方,我没有返回我应该返回的东西。
我正在返回递归调用,但似乎我没有返回“一路”
语境
我正在对列表中的每个组合进行深度优先搜索。一旦我达到达到某个条件的组合,我就想返回。
我正在保持我的组合的“状态”,并且正在回溯我应该在哪里(我认为)。
我究竟做错了什么?
class Combo:
def __init__(self, list):
self.staples = list
Combo 有一个名为“staples”的属性,由一系列主食类组成。我想遍历决策树中的钉书钉列表以找到最佳数量。
在这种情况下,最佳数量是对列表中每个钉书钉实例的数量求和,并作为 Combo 实例的属性存储/重新计算。
def IterateStaples(combo, target):
#Exit condition for combo dictionary
if all(combo.diff[macro] < 2 for macro in combo.diff):
return combo;
#iterate through all items in list
for staple in combo.staples:
#Increment and calc conditions
staple.increment()
combo.calcTotals()
combo.findDiff(target)
#If exceeds target value, backtrack
if combo.findConflict(target):
staple.decrement()
combo.calcTotals()
combo.findDiff(target)
#Redundant exit condition to try and return
elif all(combo.diff[macro] < 2 for macro in combo.diff):
return combo
#Recursive call
else:
return IterateStaples(combo, target)
staple.decrement()
combo.calcTotals()
combo.findDiff(target)