写在前面
最近在重新学习《算法导论》这本书,在看到介绍递归的时候,想起了当时学习算法时的痛苦,递归是一种让人有爱与恨的算法理念,之所以爱是因为其的使用思路很清晰且算法复杂度等接近最优,恨就是因为它的思想太过于抽象了。。。
虽然现在对递归的理解仍然算不上透彻,但是也能算运用自如了,相信大家看完本篇博客后,学习我的“另类”方法,一定会豁然开朗(可能有些观点并不正确,但是有时候错误的观点反而能够让理解变得轻松,大家知道这些观点是错误的就行。)
对递归算法的基本理解
所谓递归,就是包含递推和回归两个自然过程,一方面要由外到里地深入,一方面又要由里到外地回到原点,这是我的基本看法,递推过程是决定整个算法的逐步计算过程,而回归就是将每一步计算的结果慢慢地进行总结,最后就能够得到我们想要的结果,说起来也还是比较抽象的,等看完下面的观点再回来看这一段基本理解就ok的。
实践是检验真理的唯一标准
我先上一个最经典的递归例子—求n的阶乘(java版):
public int get(int n){
if(n<1){