def divide_conquer(problem,param1,param2,...):
#recursion terminator 递归的层级到了叶子节点,到达叶子节点也就是说这个子问题没有了已经被解决了
if problem is None:
print_result
return
#prepare data 处理当前层逻辑
data = prepare_data(problem)
subproblems = split_problem(problem,data)
#conquer subproblems 下探到下一层
subresult1 = self.divide_conquer(subproblems[0],p1, ...)
subresult2 = self.divide_conquer(subproblems[1],p1, ...)
subresult3 = self.divide_conquer(subproblems[2],p1, ...)
...
#process and generate the final result
result process_result(subresult1,subresult2,subresult3,...
#revert the current level states
分治和递归的不同在于要将
即:在dill down 和 revert state中间再加一步,将这些dill down得到的子结果要合并在一起并返回回去