背景:
递归是计算机科学中的一个重要概念。它是许多其他算法和数据结构的基础。每当递归函数调用自身时,它都会将给定的问题拆解为子问题。递归调用继续进行,直到到子问题成为一个不可以拆分的、可以直接求解的最简单问题。
0、优秀博客
https://www.huaweicloud.com/articles/0e23bbc6732190b4796bdba78ecc47a9.html
1、基本思想:写出递归公式,找到终止条件
终止条件:一个简单的基本案例(basic case)(或一些案例), 能够不使用递归来产生答案的终止方案。
递归公式:就是递推规则(递推关系),可将所有其他情况拆分到基本案例。
2、递归代码
将递归公式、终止条件转换成为递归代码。需要清晰知道递归函数的功能(输入、返回)
3、典型例子:
排队取票,走台阶等等。
排队取票:求解自己所在排队的位置。递归关系就是问前面一个。第n和第n-1的人的排队位置的求解思路是一样的。直到递归到位置第一个人就开始返回1。
4、注意事项:
不要试图用人脑思考清楚复杂递归过程。
函数可能会有多个位置进行自我调用(这是分治算法)。一般来讲,递归是分治的基础。