当前位置: 首页 > news >正文

数据结构与算法===递归

文章目录

  • 定义
  • 适用场景
    • 爬楼梯
    • 代码实现
  • 小结

定义

递归(Recursion)是指函数的自身调用。
这个算法演变为了程序员之间的梗,所表达的意思近似于“套娃”,表示不断重复引用别人的话从而产生循环。

适用场景

这个应该很多的,像一些树的遍历;前序,中序,后序,都可以使用递归来实现。来看看下面的例子吧。

爬楼梯

在这里插入图片描述
题目如上,也可以去leetcode上去看看。这个是我很早之前刷过的题,下面看看代码实现

代码实现

先看看C++的吧,如下:

class Solution {
public:int climbStairs(int n) {if(n <= 3){ return n; }int f0 = 2, f1 = 3, ans = 0;for(int i = 4; i <= n; ++i) {ans = f0 + f1;f0 = f1;f1 = ans;}return ans;}
};

再看看python的实现吧,如下:

class Solution:def climbStairs(self, n: int) -> int:if n < 4:return nans = 0f2 = 2f3 = 3for i in range(4, n+1):ans = f2 + f3f2 = f3f3 = ansreturn ans

小结

这里采用了递归树的思维,为什么不是直接调用函数呢,可以看下之前讲过的算法时间复杂度,里边有很多重复的操作,就采用了递归的思维,然后做了下调整,用一些临时变量来存储,减少了内部调用。下边给个递归的模板吧,如下:

# Python
def recursion(level, param1, param2, ...):     # recursion terminator     if level > MAX_LEVEL: 	   process_result 	   return     # process logic in current level     process(level, data...)     # drill down     self.recursion(level + 1, p1, ...)     # reverse the current level status if needed

这么看还是很清晰的。

http://www.lryc.cn/news/346152.html

相关文章:

  • 面试官:BIO、NIO 和 AIO 有什么区别?
  • HTML:元素属性详解及代码示例
  • 【Flask 系统教程 5】视图进阶
  • 代码训练LeetCode(17)存在重复元素
  • 运营模型—归因分析(Attribution Analysis)
  • 我必须要吹一波MATLAB 2024a,太牛逼了!|福利:附安装教程及下载地址
  • XMLHttpRequest与Axios详解
  • 【区块链】智能合约简介
  • 上海市计算机学会竞赛平台2024年1月月赛丙组成绩等第
  • 【算法入门教育赛2】C.曼哈顿种类 C++题解与代码
  • Electron使用 SQLite
  • 怎样的跨网软件,可以实现网间数据的安全收发?
  • Sora惊艳亮相:AI技术掀起创作革命,影视产业迎来新风貌!
  • Mac电脑安装打开APP显示问题已损坏 问题解决
  • AI 数据观 | TapData Cloud + MongoDB Atlas:大模型与 RAG 技术有机结合,落地实时工单处理智能化解决方案
  • Vulnhub靶机随笔-Hacksudo_Aliens
  • 抖店选品都怎么选品?什么样的产品更吸引人,更具有购买力?
  • 将来会是Python、Java、Golang三足鼎立吗?
  • Java入门基础学习笔记16——运算符
  • golang中三种线程安全的MAP
  • C++笔试强训day16
  • spsr 的恢复出错,导致 thumb 指令集的 it 条件运行指令运行异常,清晰的调试思路帮助快速解决问题
  • mysql binlog 如何区分db
  • ESP32 IDF linux下开发环境搭建
  • 光伏电站智能管理平台功能全面介绍
  • SSL证书 购买流程
  • C++|二叉搜索树
  • 网页html版面分析-- BeauifulSoup(python 文档解析提取)
  • 第五十八节 Java设计模式 - 适配器模式
  • 程序员的归宿。。