1 递归(Recursion)
1.1 特点
(1)递归 - 循环,通过函数体来进行的循环;
(2)盗梦空间的梦境

1.2 递归状态
(1)示例

1.3 注意要点
(1)警惕堆栈溢出:如果递归求解的数据规模很大,调用层次很深,一直压入栈就会有堆栈溢出的风险;在代码中限制最大递归深度超过深度就抛错;
(2)警惕重复计算:通过比如散列表保存已求解的结果,空间复杂度从O(n) 变成O(1);
(3)警惕生产环境脏数据导致死循环:如果A的推荐人是B,B的推荐人是C,C的推荐人是A,解决方式是判断环;
1.4 递归思维要点
(1)不要人肉进行递归(最大误区),初学者可以在纸上画出递归的状态树,慢慢熟练之后一定要抛弃这样的习惯。一定要记住:直接看函数本身开始写即可。否则,永远没办法掌握、熟练使用递归;
(2)找到最近最简的方法,将其拆解成可重复解决的问题(找最近重复子问题)。原因是我们写的程序的指令,只包括 if else 、 for 和 while loop、递归调用;
(3)数学归纳法的思维


被折叠的 条评论
为什么被折叠?



