有句话叫递归算法只可意会不可言传,我也领略了,感觉递归算法好神奇,不知不觉的就把工作做完了!
下面这道题也是小编从力扣上看来得,但是关于它是怎样递归的是小编自己想的哦❤️❤️如果有不足,希望大家多多指正,谢谢大家😆
题目:![在这里插入图片描述](https://img-blog.csdnimg.cn/bea5012c6c7c4dddaefdabf3338df664.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qix5qix6aOO,size_20,color_FFFFFF,t_70,g_se,x_16)
程序代码:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
if(l1->val < l2->val){
l1->next = mergeTwoLists(l1->next,l2); return l1;
}
else{
l2->next = mergeTwoLists(l1,l2->next); return l2;
}
}
递归详解:
如图,一共调用五次,当最后一次调用,l2->next的值为空时,return l1,注意,此时l1的值是4,从而可以看到第五次调用处l2->next=4,l2=4,此时再return l2,注意此时l2链表是4->4,return给第四次调用处,以此类推,一直return到第一次调用处,最后一个return返回给主函数,输出的便是合并的链表啦
可能小编说的不太好,我会继续努力的呀,希望大家可以多多鼓励支持,爱你们🌸🌸🌸