五 链表与递归1 递归

链表与递归

提起链表还有一个非常重要的话题: 递归
递归的话题总是和树连接在一起的,在树结构中使用递归是方便的

但链表这种结构也适合使用递归
因为链表具有天然的递归性质。但由于链表结构比较简单,我们用循环的方式也可以解决,所以在链表上使用递归比较少,但练习链表递归有助于我们理解递归和树

本章将不使用自己实现底层的单链表类,而是使用leetcode上的链表类
leetcode上链表相关提米是直接以链表为中心的,而不会包装链表类

什么是递归:

什么是递归:本质上,将原来的问题,转化为更小的同一问题。问题规模小到一定规模,就可以解决出来了。。

写递归算法的基本元素:

所有递归算法可以分成两部分:
1、求解最基本问题(这个不能自动求解,需要程序员编写逻辑的)
2、递归算法核心问题,把原问题转化成更小问题的过程!!!

转化成更小问题,不是仅仅求更小问题的答案,而是要根据最小问题的答案,构建出原问题的答案

写递归函数时,要注意递归函数的宏观语义
函数递归其实也是一个函数,和子函数调用是一样的

不要陷进递归函数里边,纠结递归是怎样调用的,而要想递归函数就是一个子函数,可以完成一个特定的功能,利用这个子函数来构建自己的逻辑,解决上层的问题!

递归调用的代价(缺点):

函数调用 + 系统栈空间
函数调用是有时间开销的:记录当前的函数逻辑执行到哪里,当前函数的局部变量的状态,都要压入系统栈
另外本身在计算机底层,找到函数的位置
递归调用消耗系统栈的空间!如果不处理最基本情况,没有终止
另外如果太多,会将系统栈都占满了。。。

递归的优点:

用递归写逻辑更简单
在线性结构中可能不明显,因为线性可以循环
但非线性结构中,如树和图,递归会非常简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值