1. 程式人生 > 實用技巧 >分治 && 遞迴

分治 && 遞迴

重複性 重複性 重複性

找重複性、分解問題、然後解決問題

組合子問題

分治 DIvider & Conquer

python

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(subresult1, subresult2, subresult3., ..);
}

javascript

function divide_conquer(problem, param1, param2) {
  // recursion terminator
  if (problem === null) {
    process result;
    return;
  }

  // prepare data
  data = preprare_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 status