算法刻意练习之递归/分治/回溯/贪心算法

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)数学归纳法的思维

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值