声明: 本文主要作为作者的复习笔记,由于作者水平有限,难免有错误和不准确之处,欢迎读者批评指正.
方法递归
方法在执行过程中又调用自身的过程,称之为"递归"(一个函数自己调用自己);
什么时候能使用递归(什么场景下适合使用递归这种程序结构来解决问题)
同时满足以下三个条件:
- 一个大问题可以拆分为多个子问题;
- 拆分后的子问题和原问题,除了数据规模不同之外,解决的思路完全相同;
- 存在递归终止条件(拆分子问题是有限的,不可能无限拆分下去);
如何写出递归函数
一定要注意方法的语义(定义出来这个递归函数到底要解决什么问题),假设这个方法已经实现好了,我们只需要利用这个方法辅助我们解决问题即可.
递归:
- 递 => 拆分,归 => 返回;
- 根据自己调用自己的过程,不断将大问题拆分为小问题;
- 一直到终止条件开始一步步向回返回;
拓展
- 计算机运行从最底层的微观角度一步步向上走解决问题(自底向上),先不断解决子问题,依次向上解决原问题(例如动态规划算法);
- 人脑从宏观角度解决问题(自顶向下),思考问题是从最开始大问题拆分为子问题计算结果(回溯算法);
- 递归是学习数据结构和算法的钥匙;