递归模版
- 递归终结条件 recursion terminator
- 处理当前层逻辑 process logic in current level
- 下探到下一层 drill down
- 清理当前层 revere the current level status if needed
分治模版
- recursion terminator
- process logic in current level
- drill down
- merge results
- revert the current level status if needed
const divide_conquer = (problem, params) => {
// terminator
if (problem == null) {
process_result
return
}
// process current problem
subproblems = split_problem(problem, data)
subresult1 = divide_conquer(subproblem[0], p1)
subresult2 = divide_conquer(subproblem[1], p1)
...
subresultn = divide_conquer(subproblem[2], p1)
// merge
result = process_result(subresult1, rubresult2, ..., subresultn)
// revert the current level status
}回溯(backtraking)
- 走一步
- 递归调用
- 恢复