算法之递归
递归算法是一种直接或者间接调用自身函数或者方法的算法,也就是说在函数内部再次调用自己。简单点: 就是自己调用自己
这个算法的核心思想: 就是原问题,可以不断地分解成规模更小的子问题,但是子问题和原问题完全是同一种类型的问题。也就是说用解决子问题的方法,同样可以解决原问题。这样,我们就可以通过递归的形式来调用方法,来表示问题的解。
所以 递归算法,其实就是分为2个大的阶段: 递和归, 也就是 有去(递去) 有回(归来)
递去: 将递归问题分解成若干个规模较小,与原问题形式相同的子问题,这些子问题可以看成是规模更小的原问题,所以,它们都可以用和原问题一样的解题思路来解决
归来: 当你将问题不断缩小规模递去的时候,必须有一个明确的结束递去的临界点,也就是结束递归的出口,一旦达到这个临界点就该从该点原路返回到原点,这样,原问题得到解决
递归思维是一种从下往上的思维方式,设计一个递归算法,我们要提取三点:
1. 提取重复的逻辑,缩小问题的规模,不断递归下去
2. 找到并明确递归终止的条件
3. 找出递归终止时的处理方法