## 递归 与 迭代
https://juejin.cn/post/7145888770410151967/
![](https://img.kancloud.cn/a4/b9/a4b932206524218ac0726cdbe01a73f8_1073x333.png)
---
递归(Recursion)和迭代(Iteration)都是计算机编程中常用的概念。
递归是一种自我调用的函数或方法,从一个问题的解可以直接引用较小输入的解。简单来说,递归就是函数自己调用自己。递归函数一般有下面几个要素:
* 基本情况:没有进一步递归调用的条件。
* 递归情况:递归调用函数本身的条件。
* 状态改变:使问题规模变小,向着递归条件趋近的方式改变问题的状态。
递归的优点是代码清晰易懂,但在实现上可能会消耗大量的内存,因为在递归过程中会依次压入函数调用栈中。所以在使用递归时,需要小心谨慎,考虑到递归的深度和所占用的内存问题。
迭代则是对于一系列重复的步骤,通过循环体来实现重复。迭代可以通过 for 循环、while 循环、列表推导式等多种方式实现。迭代的循环体也可能是递归调用。迭代的优点是避免了递归所使用的函数调用栈,因此一般情况下迭代比递归更加高效。
简单来说,递归是自上而下解决问题,迭代是自下而上解决问题。在实际编程中,需要根据问题的特性和自身编程习惯选择递归或迭代来解决问题。
- 个人导航
- 考研408
- 数学
- 基础视频汇总
- 线性代数
- 概率论
- 英语
- 好看的课程(全英语)
- 政治
- 设计网址汇总
- 字体下载
- 图片下载 & 加工 & 制作
- PPT下载
- 日本网站
- ico图标制作与转换
- 简历制作
- 数据可视化
- 周边制作(样机)
- 房屋装修
- 3D模型
- 音乐
- 电脑与服务器
- QQ机器人
- 实用软件
- 重装系统
- 免费API接口
- 电视
- 视频制作、剪辑
- live2d
- 历史
- 英语学习
- 英语口语
- 作文批改 & 修改
- 自媒体
- 游戏网址汇总
- 我的世界网址汇总
- 我的世界开服网址
- 我的世界实用网址
- 我的时间——观看视频
- 我的世界—mod制作
- 学术网站
- 科研绘图
- 文献检索与下载
- 论文写作
- 论文查重
- GitHub项目
- 奇葩的项目
- 实用的项目
- 毕设项目
- 好看的博客项目
- 别人的开发网站集合
- 大佬们的博客
- 前端开发者
- 人工智能开发者
- 运维 & Linux
- unity
- 自学路径
- Python开发
- conda
- matplotlib
- pyqt
- streamlit
- flask
- 人工智能(AI)应用 & 开发
- labelimg
- YOLO
- AI绘画
- 机器人
- c/c++/c#语言
- 递归与迭代
- c# 与.net
- qt
- Java后端开发网址汇总
- Java实用开源项目
- java经验与面试
- java开源项目(应用级项目)
- 前端开发网址汇总
- 前端入门
- 前端开发工具
- 实用前端项目
- three.js
- node.js
- vue.js
- webGL
- canvas
- bootstrap
- ECharts
- 小程序
- 好看的前端网址
- MATLAB(matlab)
- 嵌入式学习
- lua学习
- 运维
- Linux
- docker