递归一般是指在函数内部又调用了自身
原理主要原理是在每次调用自身的时候,需要解决的任务会进一步简化或者理解为任务量变少;
直到简化至一些基本的case,可以直接处理并返回而不再需要进一步简化的情况。
算法实现的大体思路- 基本case逻辑,即在某些条件下不需要递归;可以直接解决的逻辑
- 递推规则,将复杂任务拆解的规则,按照这个规则拆解,最终可以拆解到基本的case;
一般来说代码首先需要处理基本的case,然后是递归的调用;
对于稍复杂一点的问题,递归调用的返回值不能直接作为上一次的返回值,需要进一步处理,根据实际情况返回应该返回的值。
举例给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
如:给定 1->2->3->4, 你应该返回 2->1->4->3
代码实现如下:
递归代码
,