数据结构与算法8-递归

数据结构与算法-回文(动态规划、快慢指针) 中我们总结了动态规划的技巧,这篇文章主要是总结递归的技巧,并给出例子。实际上DP和递归思路上基本上都是三步走策略,还是很相似的。
详细原文章来自:https://mp.weixin.qq.com/s/mJ_jZZoak7uhItNgnfmZvQ

递归的三大要素

1.定义函数的功能,明确函数想要干什么

在这里插入图片描述

2.找到初始值,即寻找递归结束的条件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.找到关系式

在这里插入图片描述
在这里插入图片描述

例题

案例1:斐波那契数列

斐波那契数列的是这样一个数列:1、1、2、3、5、8、13、21、34….,即第一项 f(1) = 1,第二项 f(2) = 1……,第 n 项目为 f(n) = f(n-1) + f(n-2)。求第 n 项的值是多少。

  1. 明确函数想要干什么
    在这里插入图片描述
  2. 找到递归结束的条件
    在这里插入图片描述
  3. 找到关系式
    在这里插入图片描述

案例2:小青蛙跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例3:反转单链表

记得之前的 数据结构与算法-链表必写题汇总(快慢指针、哨兵等) 也有这题,但是那题中我们使用一个指针即可解决,但实际上的话也可以使用递归的方法进行解决。这题还和 剑指Offer3-从尾到头打印链表 比较相似,对于从尾到头打印链表问题,我们在这里并不需要反转单链表,所以两题还是有区别的。但是都可以通过递归的方法进行解决。以下是解题思路:

反转单链表。例如链表为:1->2->3->4。反转后为 4->3->2->1

在这里插入图片描述
但这里函数反转链表的功能,仅仅是反转当前节点!
在这里插入图片描述
具体动图可以进这里看一下:https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/
在这里插入图片描述
3.关系式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前Facebook工程师 打造王者级课程                            覃超 Facebook 早期员工&多年面试官、曾作为 Facebook Messenger Tech Lead,主导和参与了 Facebook App、Facebook Messenger、Facebook Phone 等产品的研发工作。 现在,覃超老师致力于计算机科学领域的培训指导,经他指导的学生,90%以上拿到了硅谷公司或国内顶级互联网公司的offer。 推动0到3岁程序员 打通职业发展路径 数据结构与算法计算机学科知识结构的核心和技术体系的基石,随着科技的飞速发展,数据结构的基础性地位反而更加坚固,是每一个程序员必须掌握的底层核心技能! 多岗位必备技能 快速提升编程内功   作为一名程序员,无论是任何岗位,掌握数据结构与算法,就可以在面试前建立自己的算法技术体系,同时有助于更好地阅读源码和设计编写一些复杂的工具,快速提升编程内功! 建立框架性知识体系 覆盖重要知识点 很多人认为可能除了面试,之后再也用不到据结构与算法了,但是如果程序员想拔高一个层次,数据结构与算法是很重要的一部分,《全解数据结构与算法》帮你完成角色的转变! 透彻讲解底层核心原理 拓展能力上限 很多人认为可能除了面试,之后再也用不到据结构与算法了,但是如果程序员想拔高一个层次,数据结构与算法是很重要的一部分,《全解数据结构与算法》帮你完成角色的转变!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xu_Wave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值