分治和回溯是一种复杂的递归,是特殊的递归。 分治、回溯 - 图1

分治代码模板

分治和泛型递归的不同在于最后可能会有一个merge,就是将子结果进行一个组合

  1. private static int divide_conquer(Problem problem, ) {
  2. // recursion terminator
  3. if (problem == NULL) {
  4. int res = process_last_result();
  5. return res;
  6. }
  7. //prepare data
  8. subProblems = split_problem(problem)
  9. //conquer subproblems
  10. res0 = divide_conquer(subProblems[0])
  11. res1 = divide_conquer(subProblems[1])
  12. //merge
  13. result = process_result(res0, res1);
  14. return result;
  15. //revert the current level status
  16. }