代码模版

// 递归代码模版
func recursion(level int, param int) {

    // 递归结束条件
    if level > MaxLevel {
        return
    }
    // 处理当前层的逻辑
    process(level, param)
    
    // 递归到下一层
    recursion(level+ 1, newParam)
    
    // 恢复当前层的状态
    
}


// 分治 是特殊的递归
func divideConquer(problem, param1, param2 ...) {

   // 递归终结条件
    if problem is Nil {
        // print result
        return
    }
    
    // 拆分问题为多个子问题
    data := prepare(problem)
    subproblems := splitProblem(problem, data)
    
    //调用递归函数即 下探到下一层
    subresult1 := divideConquer(subproblems[0], p1....)
    subresult2 := divideConquer(subproblems[1], p1....)
    subresult3 := divideConquer(subproblems[2], p1....)
    
    // 合并结果
    results := process_results(subresult1, subresult2, subresult3...)
    
}

Last updated

Was this helpful?