文章目录

  • 前言
  • 一、介绍概念
  • 二、总结

前言

偶然看到了迭代与递归,抱着学习的心态去百度了各种答案,什么函数关系什么代码看的是一头雾水,于是在半个小时的努力下终于搞懂了递归与迭代的区别,在这里分享给各位我自己是怎么样理解这俩的区别的,方法不适用每个人,反正我记住了,相信你也能记住


提示:以下是本篇文章正文内容,下面案例可供参考

一、介绍概念

迭代:从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。这里可以看为 for (i=1 , i<100 , i++)
递归:想象成一个树结构,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。


举个例子

迭代:你现在是一个求职者,你进入了一家公司,你知道你面前50个人里有一个是你要找的HR,但你不知道他长什么样子,只知道他叫“张三”于是你就开始问公司里的其他职员,张三长什么样子,第一个说,张三是秃头,你排除了25个人,第二个说张三没眉毛,你又排除了10个人,经过几遍排除,你终于确定了你要找的目标。


递归就简单很多了,你还是一个求职者,你进入了一家公司,面前还是50个人,但你这次不需要一个一个自己找人问,你身边有一个老好人,他即使不知道你要找的是哪一个,也不会直接返回值告诉你他不知道,而是会去帮你问别人,注意,迭代里的你是自己去一个一个找,递归里的你,是别人帮你一个一个找,虽然这个老好人返回的结果可能还是找不到谁是张三,但是他有去帮你查找的过程


注意:这里你找老好人的过程用的是递归,老好人帮你找的过程用的是迭代,没理解可以多看几遍。

二、总结

递归就是,每次循环都包含自己的请求,子问题必须携带原始问题,且一次一次缩小范围,最终找到结果

迭代就是,自己执行很多次,每次都能排除一个,直到找到结果。

到此结束,看的懂的也要多看看别人怎么理解的,没看懂的,哪还不抓紧重新看。

一次看懂迭代与递归的区别相关推荐

  1. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  2. python和java一样吗-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  3. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?

    原标题:十张图看懂SDN与NFV的区别与联系? 专业的人说的很准确但是普通人难以理解,常常记不住,分不清,不专业的人往往又说的差点意思.无意间,笔者在领英上看到一个介绍SDN/NFV区别的公开文档,内 ...

  4. python和java的区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  5. 【函数】一篇文章带你看懂控制流、递归、高阶函数

    目录 控制流 条件语句 迭代语句 示例:质因数分解 递归 示例:阶乘 示例:斐波那契数列 示例:判断奇偶数 高阶函数 lambda 表达式 设计函数 示例:累加计算 示例:柯里化 Lab 1: Fun ...

  6. C++中迭代和递归的区别

    从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身:迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想.迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存 ...

  7. 迭代与递归的区别(斐波那契数列和小猴子摘桃)

    递归算法代码简洁清晰,易于验证,但时间上与空间消耗较大,因为他有嵌套函数调用,如果调用层数太深,会存在堆栈溢出的风险,而迭代的形式相复杂,但效率较高,往往有这样的观点,等不用递归就不用递归,递归都可以 ...

  8. 红米k30 允许调用gpu调试层_老司机带带你:一张图看懂红米K30全系区别-红米K30,小米 ——快科技(驱动之家旗下媒体)-...

    在时隔近3个月后,小米于今日再次发布红米全新一代旗舰"K30S 至尊纪念版". 是的,你没有看错,K30系列又双叒叕添一员大将. 为了今年双11能取得满意成绩,小米将不久前在海外发 ...

  9. 设计模式——结构型模式之代理模式和适配器模式(类比+图解,从无到有,一文看懂几种模式的区别)

    设计模式 系列文章: 一.创建型模式--工厂模式 二.创建型模式--单例模式.原型模式 三.创建型模式--建造者模式 四.结构型模式--装饰者模式 五.结构型模式--代理模式.适配器模式 文章目录 设 ...

最新文章

  1. Flutter底部导航栏的实现
  2. ② DataGridView 设定单元格只读
  3. linux ssh服务的优化,SSH服务端配置、优化加速、安全防护
  4. win10 自待wmi应用 查询wmi
  5. Kafka的producer案例,Kafka的consumer案例
  6. sqlserver date类型和字符串比较_VB编程基本数据类型完整剖析
  7. PAT 1088 三人行(20 分)- 乙级
  8. Jmeter接口测试实战分享,你一定要知道的问题总结!
  9. vsftpd+mysql使用
  10. Oracle12c错误01017,ORACLE12.2中用户无法登陆报ORA-01017的解决办法
  11. VUE组件封装echarts百度地图点位效果
  12. WPS Excel将多个Excel文件合并到一个Excel文件中(sheet)
  13. java 聊天机器人_java实现自动回复聊天机器人
  14. GST pull down实验—gst融合蛋白沉降技术原理
  15. IEEE浮点数尾数向偶舍入-四舍六入五成双
  16. 基于STM32的无损压缩算法miniLZO移植,压缩率很高,20KB随机数压缩到638字节,耗时275us
  17. 使用SqlConnection.connectionString连接数据库
  18. smss.exe是什么进程?详解Windows会话管理器中的smss.exe
  19. 安全攻访策略:PDR模型
  20. Linux下文件增删改查定位压缩操作与权限所属用户

热门文章

  1. 点评阿里云、盛大云等国内IaaS产业
  2. git登录报错,git clone无法记住用户名密码,修改git提交用户名
  3. 论文阅读——椭圆检测 2020:Arc Adjacency Matrix-Based Fast Ellipse Detection
  4. 为什么要学习SQL?
  5. DialogBlocks2.0的注册算法
  6. 外企出口的免抵退税(一般贸易计算方法)
  7. Linux系统彻底删除Mysql
  8. pycharm的安装和汉化
  9. ubuntu18.04更换默认下载源为国内清华源、阿里源
  10. 获取keytab文件