联系作者:humminwang@163.com
递归图不是一种经典算法,也不是一种数据结构,但是我们仍然要把他单独拿出来,因为如果掌握这种简单的递归图的画法,我们便很容易分析一下大型的递归问题,不会被其中各种复杂的调用关系,不知所措,所以还是有必要学习一下。
递归问题
把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
- 递归要有边界条件
- 递归前进段
- 递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
递归图
如何画出递归的调用过程?
方法一:
这种画法很清晰显示每一层级涉及到的调用参数,在一些动态规划算法中,我们常看到很多节点被重复计算,所以我们看到这张图时,我们知道我们应该使用记忆化的动态规划算法。
方法二:
显示了清晰的调用关系,以及回退关系。
方法三:
画的比较多,有点复杂,但是逻辑还是很清晰。
方法四:
图显示了代码结构,更加复杂,不易懂。
Reference
https://blog.youkuaiyun.com/YPP0229/article/details/95457902
https://baike.baidu.com/item/%E9%80%92%E5%BD%92/1740695
https://blog.youkuaiyun.com/missxy_/article/details/89480206