1.什么是递归
函数在运行时,调用自己 如f(x)=x+f(x−1)
def foo(x):
return x+foo(x+1)
x=2时,返回2+foo(3)
调用foo(3)
x=3时,返回3+foo(4)
调用foo(4)
…
递归的终止条件:x<50
def foo(x):
if x<50:
return x+foo(x+1)
else:
return 0
- 递归函数必须有终止条件,否则会无止境,报错
- 递归函数先不断调用本身,直至遇到终止条件然后进行回溯
2. 合并两个有序链表
递归解法:
- 终止条件:当两个链表都为空时,表示合并完成
- 如何递归:先判断l1和l2头节点哪个更小,然后将较小节点的next指针指向其余节点的合并结果
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1: return l2 # 终止条件,直到两个链表都空
if not l2: return l1
if l1.val <= l2.val: # 递归调用
l1.next = self.mergeTwoLists(l1.next,l2)
return l1
else:
l2.next = self.mergeTwoLists(l1,l2.next)
return l2