递归几个特点:
自己调用自己
一层层的的解刨,从外面往里面走,一点点的变小,最后得到了结果。
https://www.zhihu.com/question/31412436/answer/683820765
参考自知乎大神,在这里膜拜下,下面的记录是为了个人学习而已。
如何写递归:
从上面我们可以知道写递归的几个要点:
第一个是明确函数本身是做什么的?递归函数本身最终会输出一个终极结果,或者在过程中会并保存一个终极结果。也就是一层层往下刨开的过程中,到了重点我们就有了结果。这个很重要,都不知道函数最终会给什么?那我们写这个有什么意义呢?
第二个明确函数的结束条件:
递归是从外面往里面走的,那什么时候是终点呢?这个结束条件非常重要,写好了我们可以刨开到终点,写不好我们会一直往里面走,就像一个物体,如果没有规定切开后最小能有多小,那么其实是可以到原子的大小呀哈哈哈哈。但是如果规定最小是到这里了,那么就有了结束的条件。大神文章就用了一个代码实例。青蛙跳呀跳来。
第三个找出函数的等价关系式:
其实刚刚不管是切开,还是一点点变小,这个操作的过程就是等价关系式了。写了这个才能算是真正的自己调用自己,真正的往了里面走,而且这个过程我们也会保存一些结果。比如下面树的算法。
剑指offer中的链表:
反转单链表。例如链表为:1->2->3->4。反转后为 4->3->2->1
1.目标是啥:最终返回反链表的头,这里是我们最终要给的东西
2.终止条件是啥:上面的例子就是到了4对吧,有啥特点。当链