1.递归
function recur(level, params...) {
// 终止条件
if (level < maxLevel) {
process_result
return
}
// 处理当前层
// 进入下一层 (注意进入下一层,参数是复制,如果是引用类型,copy 一份,如果不能 copy,就要清理状态了)
recur(level+1, params...)
// 如果有必要,需要清理状态
}
2.分治
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_result(subresult1, subresult2, subresult3, …)
# revert the current level states
3.回溯 类似于分治
4.动态规划定义