合并过程如下:
1 --> 3 --> 5
2 --> 4 --> 6
1 --> ( 3 --> 5
2 --> 4 --> 6 )
1 --> 2 --> ( 3 --> 5
4 --> 6 )
1 --> 2 --> 3 --> ( 5
4 --> 6 )
1 --> 2 --> 3 --> 4 --> ( 5
6 )
1 --> 2 --> 3 --> 4 --> 5 --> ( 6 )
1 --> 2 --> 3 --> 4 --> 5 --> 6
c语言实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if (!list1)
return list2;
if (!list2)
return list1;
if (list1->val < list2->val) {
->next = mergeTwoLists(list1->next, list2);
list1return list1;
} else {
->next = mergeTwoLists(list1, list2->next);
list2return list2;
}
}
c语言实现:
int fib(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return fib(n - 1) + fib(n - 2);
}