《剑指Offer》 递归总结篇

 

  • 反向遍历链表
  • 翻转链表
  • 合并两个排序的链表

0、基础

基本思想,是把规模较大的一个问题,分解成规模较小的多个子问题去解决,而每一个子问题又可以继续拆分成多个更小的子问题。

最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题;或者说,必须先解决子问题,再基于子问题来解决当前问题

【A】----依赖---->【B】----依赖---->【C】

我们的终极目的是要解决问题A,那么三个问题的处理顺序如下:

开始处理问题A;

由于A依赖B,因此开始处理问题B;

由于B依赖C,开始处理问题C;

结束处理问题C;结束处理问题B;结束处理问题A

总结:栈的核心思想是递归,递归过程返回的顺序是前进顺序的逆序。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

递归多用 if,选择结构。每次都要判断,层层递进,每次都调用这个函数。看起来清晰但消耗空间大

事实上,链表非常适合递归,因为我们在使用链表的时候都是使用指针,而不像数组那样直接使用一个内存块,因为递归的风险,也就是栈溢出可以避免

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值