递归的思路:
- 找到终止条件
- 处理当前层逻辑(可能无)(当前层的数据,就是传参)
- 进入下一层
- 回溯时,当前层的处理(回溯到当前层是,当前层的数据就是 进入下一层时的传参)
比如:递归翻转链表
LinkNode *reverseLink(LinkNode *head) {
if (!head || head->next == nullptr) { //终止条件
return head;
}
//处理当前层逻辑,翻转时,本层无需处理,直接进入下一层
res = reverseLink(head->next);
// 回溯处理,回溯到这里时,当前层的变量是 head->next
LinkNode *cur = head->next;
cur->next = head; //当前层的next == 上一层的Head
head->next = nullptr;
return res;
}