递归可以简单的理解为一个杯子。
从第一个开始放,然后从第一个结束,从结束条件反弹。
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
if(list1 == NULL){
return list2;
}
if(list2 == NULL){
return list1;
}
if(list1->val <= list2->val){
list1->next = mergeTwoLists(list1->next,list2);
return list1;
}else{
list2->next = mergeTwoLists(list1,list2->next);
return list2;
}
}
这里看,第一次执行开始,然后从第一次执行作为结束,然后就执行return list1或者 return list2;
然后
if(list1 == NULL){
return list2;
}
if(list2 == NULL){
return list1;
}
作为结束条件