合并两个有序链表
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:

示例 2:
示例 3:
提示:
- 两个链表的节点数目范围是
[0, 50] -100 <= Node.val <= 100l1和l2均按 非递减顺序 排列
题解
什么是递归呢?函数在运行时调用自己,这个函数就叫递归函数,调用的过程叫做递归。
比如定义函数 f(x)=x+f(x−1):
- python
如果代入 f(2)f(2)f(2):
- 返回 2+f(1)2+f(1)2+f(1);
- 调用 f(1)f(1)f(1);
- 返回 1+f(0)1+f(0)1+f(0);
- 调用 f(0)f(0)f(0);
- 返回 0+f(−1)0+f(-1)0+f(−1)
- ......
这时程序会无休止地运行下去,直到崩溃。
如果我们加一个判断语句 x > 0:
- python
这次计算 f(2)=2+f(1)=2+1+f(0)=2+1+0=3。我们从中总结两个规律:
- 递归函数必须要有终止条件,否则会出错;
- 递归函数先不断调用自身,直到遇到终止条件后进行回溯,最终返回答案。
根据以上规律考虑本题目:
- 终止条件:当两个链表都为空时,表示我们对链表已合并完成。
- 如何递归:我们判断
l1和l2头结点哪个更小,然后较小结点的next指针指向其余结点的合并结果。(调用递归)

kotlin

