学习笔记
- 向下进入到不同梦境中,向上又回到原来的一层
- 通过声音同步回到上一层
- 每一层的环境和周围的人都是一份拷贝、主角等几个人穿越不同层级的梦境(发生和携带变化)
python代码模板:
def recursion(level, param1, param2,...):
#recursion terminator,递归终止条件
if level > MAX_LEVEL;
process_result:
return
# process logic in current level,进行当前层业务逻辑代码
process(level,data,...)
# drill down,下钻到下一层
self.recursion(level+1,p1,...)
# reverse the current level status if needed,清理当前层状态Java代码模板:
public void recur(int level, int param){
//terminator
if(level > MAX_LEVEL){
//process result
return;
}
//process current logic
process(level, param);
//drill down
recur(level:level+1, newParam);
//restore current status
} - 不要人肉进行递归(最大误区)——抵制人肉递归
- 找到最近最简方法,将其拆解成为可重复解决的问题(重复子问题)——找最近重复性
- 数学归纳法思维
- Problem --> Divide(Sub-Problem) --> Conquer(Sub-Solution) --> Merge(Solution)
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(subprobelms[1], p1, ...)
subresult3 = self.divide_conquer(subproblems[2], p1, ...)
# process and generate the final result
result = process_result(subresult1, subresult2, subresult3,...)