学习笔记
func recursion(level int, params1, params2 ...) {
// 递归终止条件
if level > MAX_LEVEL {
processSomething()
return
}
// 函数的具体处理逻辑
processLogic()
// 递归调用
recursion(level+1, params1, ...)
// 如果还有其他数据要处理,比如全局变量的处理等
}- 避免人为递归
- 找到最近最简方法,将其拆解成可重复子问题
- 数学归纳法思维
func divide_conquer(problem, param1, parm2,...) {
// 终止条件
if problem == nil {
processResult()
return
}
// 处理逻辑
data := prepare_data(problem)
subProblems = split_problem(problem, data)
// 递归处理分解问题
subResult1 := divide_conquer(subProblems[0], p1, ...)
subResult2 := divide_conquer(subProblems[1], p1, ...)
subResult3 := divide_conquer(subProblems[2], p1, ...)
// 合并结果
result := process_result(subResult1, subResult2, subResult3)
}