递归和迭代是很重要的编程思想,所以对于其原理还是很有必要清楚的。

迭代(iteration)维基百科 上是这样介绍的:

Iteration is the repetition of a process in order to generate a (possibly unbounded) sequence of outcomes. The sequence will approach some end point or end value. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration.

迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

上面介绍可以说是非常细致详尽了,这里还是来个小例子具体说明下迭代的我对迭代的理解吧~

分析过程

目的: 接近并达到所需的 目标或结果
过程:重复反馈每一次 过程
文字描述:可以这么想,我左手一袋小球(3个),右手一袋小球(5个),我想知道这两袋里面一共有几个小球,可是我不会加法运算啊(我朋友们也不会),咋办呢,把它给我朋友折腾吧,折腾完给我个结果。
于是我把它交给朋友A,朋友A把左手袋子里的小球拿出一个放到了右手袋子里,告诉朋友B:我左手这袋子有两个小球,右手这袋子里有6个小球,又给了朋友B,朋友B照做又给了朋友C…

图示如下:
2,6
1,7
0,8
8
我 3,5
B
C
D

即:
3 + 5   |
2 + 6   |
1 + 7   |
0 + 8   |
8         |
————
时间复杂度为 O(x)
空间复杂度为O(1)


递归(Recursion)维基百科 上是这样介绍的:

Recursion occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics and computer science, where a function being defined is applied within its own definition. While this apparently defines an infinite number of instances (function values), it is often done in such a way that no loop or infinite chain of references can occur.
递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。

通俗点说,递归就是那个脍炙人口的故事:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”
典型案例:斐波那契数列
还是上面分小球的例子,递归就是在过程中得到的结果,还要将结果返回给自身,然后继续传下去…小伙伴们一起忙起来~啦啦啦~

图示如下:

3,5
8
2,5
7
1,5
6
B +1
C+1
D ...

即:
3 + 5  |
1 + 2 + 5  |
1 + 1 + 1 + 5  |
1 + 1 + 1 + 0 +5  |
1 + 1 + 1 + 5  |
1 + 1 + 6  |
1 + 7  |
8  |
时间复杂度为 O(x)
空间复杂度为O(x)

若发生事物故障,迭代过程中的数据已经保存在了程序中了,而递归会有一些不可见的过程在暗暗发生…(蹊跷地那种呦~/逃

递归与迭代的区别分析相关推荐

  1. 递归和迭代的区别——以DNS为例

    递归和迭代的区别--以DNS为例 2021.7.22 可能或多或少都听说过:函数的递归调用,牛顿迭代法,在DNS(Domain Name System域名系统)中有递归查询和迭代查询两种······那 ...

  2. java 递归和迭代的区别

    递归就是在过程或函数里面调用自身,而迭代是利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B.显然递归用了栈空间,迭代因为始终在一个函数体中,所以使用的是堆空间.迭 ...

  3. java中递归与迭代的比较_深究递归和迭代的区别、优缺点及实例对比

    1.迭代是人,递归是神! 从"编程之美"的角度看,可以借用一句非常经典的话:"迭代是人,递归是神!"来从宏观上对二者进行把握. 从概念上讲,递归就是指程序调用自 ...

  4. C++递归和迭代的区别,并举例说明

    递归:函数自己重复调用自己 迭代:利用变量的原值推算出变量的一个新值:A不停的调用B 例子一:斐波那契数 递归(recursion): #include <iostream> #inclu ...

  5. 迭代和递归的应用例子c语言,递归和迭代的应用以及区别

    斐波那契数列: 1 1 2 3 5 8 13 21 34 55 - fb(n) : 1 n <= 2 fb(n-1) + fb(n-2) n > 2 int fb(n) { if(n &l ...

  6. 递归和迭代有什么区别?

    "递归"和"迭代"的区别如下: 1.递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把 ...

  7. 递归、迭代和分治(1):递归

    ​1.从现实中理解三个概念 可能很多人就已经接触了递归了,不过我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是! 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不 ...

  8. 递归和迭代_迭代与递归

    很多编程小白都会遇到'迭代'和'递归'的问题(包括我自己),大部分同学还是不知道迭代与递归的区别.下面我就尝试用最通俗易懂的模式讲解递归与迭代的区别. 1.迭代: 迭代其实很简单,我们在编程中经常用到 ...

  9. 研究青蛙跳台阶问题区别函数递归与迭代

    文章目录 前言 一.什么是青蛙跳台阶问题 二.使用递归和迭代(非递归)的区别 1.递归实现 2.迭代(非递归) 前言 青蛙跳台阶问题是函数递归的经典问题,也是求斐波那契数的变式,通过研究非递归(迭代) ...

最新文章

  1. 使用diskpart命令修复U盘分区
  2. Android Bitmap OutOfMemory 解决的方法
  3. 41款常用APP被爆过度索取权限、数据共享给第三方
  4. python--学习1
  5. python的开发环境包括_下搭建 Python 开发环境
  6. 图解Team Foundation Server 2013系列
  7. PowerShell实现“机器人定时在企业微信群中发送消息”功能(上)
  8. Java的GUI窗体出现乱码解决方法
  9. 数字电路基础(四) 数据分配器、数据选择器和数值比较器
  10. 计算机网络-第一章测试题及答案
  11. Java集成云打印机(芯烨云)——文档篇
  12. 2022 SpeechHome 语音技术研讨会-回顾
  13. 高级查询(mysql)
  14. knex mysql 操作_手把手教你用express + mysql + knex 做个 todoList
  15. 华擎计算机主板参数,【华擎Z390参数】华擎Z390系列主板参数-ZOL中关村在线
  16. 电压跟随器的使用方法
  17. 最好用的房屋租赁软件(租赁行业)
  18. 调试运用(电流标幺化,PWMDAC调试,ARCTAN反正切)
  19. 高通芯片GPU是否有类似于HSR功能
  20. chromosome conformation capture:染色质构象捕获技术

热门文章

  1. 华为hana服务器型号齐全,华为sap hana一体机配置报价指导
  2. 从140元到30元,BM官方电报群与成员轻松互动:EOS没死
  3. 通信工程可以用c语言干什么,通信工程专业是做什么的?
  4. 学会分享,学会生活,分享5款简单易用的软件。
  5. 一分钟学会python进制转换
  6. Requests 和 Scrapy 中的代理 IP 设置
  7. QComboBox 右侧下拉按钮qss样式设置
  8. Spinner的详解
  9. 浏览器工作原理探究详解
  10. 小程序 | 微信小程序实现商品分类列表