迭代与递归的区别

一次看懂迭代与递归的区别 文章目录前言一、首先介绍概念二、使用步骤1.引入库2.读入数据总结 前言 偶然看到了迭代与递归,抱着学习的心态去百度了各种答案,什么函数关系什么代码看的是一头雾水,于是在半个小时的努力下终于搞懂了递归与迭代的区别,在这里分享给各位我自己是怎么样理解这俩的区别的,可能有些土方法,反正我记住了 提示:以下是本篇文章正文内容,下面案例可供参考 一、首先介绍概念 迭代:从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。 递归:想象成一个树结构,从字面可以其理解为重复“递推”和“回归”的 阅读详情

递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.

一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.

使用递归要注意的有两点:

1)递归就是在过程或函数里面调用自身;

2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.

 

递归分为两个阶段:

1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;

2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.

 

利用递归可以解决很多问题:如背包问题,汉诺塔问题,...等.

斐波那契数列为:0,1,1,2,3,5...

fib(0)=0;

fib(1)=1;

fib(n)=fib(n-1)+fib(n-2);

 

  1. int fib(int n)  
  2. {  
  3.    if(0 == n)  
  4.        return 0;  
  5.    if(1 == n)  
  6.        return 1;  
  7.    if(n > 1)  
  8.        return fib(n-1)+fib(n-2);  
  9. }  

上面就是一个简单的递归调用了.由于递归引起一系列的函数调用,并且有可能会有一系列的重复计算,递归算法的执行效率相对较低.

 

 

迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B.

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.

 

  1. //这是递归  
  2. int funcA(int n)  
  3. {  
  4.     if(n > 1)  
  5.        return n+funcA(n-1);  
  6.     else   
  7.        return 1;  
  8. }  
  9. //这是迭代  
  10. int funcB(int n)  
  11. {  
  12.     int i,s=0;  
  13.     for(i=1;i<n;i++)  
  14.        s+=i;  
  15.     return s;  
  16. } 
计算机科学导论实验(三) 计算机科学导论实验 ——实验三 递归算法、迭代算法及其比较 文章目录计算机科学导论实验——实验三 递归算法、迭代算法及其比较前言一、实验目的二、实验内容1.使用函数求解1+2+3+…..+n,n的值由用户输入2.求解斐波那契数列问题中指定项的值3.n的“阶乘和”F(n)的计算公式为F(n)=1!+2!+3!+...+n! 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、实验目的 1、掌握递归算法和迭代算法的原理及相互之间的异同。 2、掌握使用可视化计算工具Raptor编写递归及迭代 阅读详情

相关推荐

斐波那契数列的迭代算法和递归算法

斐波那契数列(Fibonacci sequence),又称“黄金分割数列“,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此......

IT小郭的技术博客 1万+

递归(A调用A)和迭代(A调用B的结果)区别

递归与迭代的区别 递归(recursion):递归常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。(A调用A) 迭代(iteration):重复反馈过程的活动,每一次迭代的结果会作为下一次迭代的初始值。(A重复调用B) 递归是一个树结构,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。 迭代是一个环结构,从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。 理论上递

Garden的博客 1396

STC8H开发(十六): GPIO模拟SPI驱动Ci24R1实现低成本无线遥控

本文详细介绍了如何使用STC8H单片机通过GPIO模拟SPI驱动Ci24R1无线模块,实现低成本无线遥控方案。内容涵盖硬件设计要点、软件驱动开发技巧及实战优化经验,特别适合消费电子产品开发者参考。Ci24R1凭借其高性价比和双模协议支持,成为替代传统nRF24L01+的理想选择。

weixin_30378623的博客 349

递归和迭代的区别

最近刷题经常会碰到迭代或递归解法,容易混淆,搜索整理如下 1、含义不同 递归是重复调用函数自身实现循环。遇到满足终止条件的情况时逐层返回来结束 迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。迭代则使用计数器结束循环。 2、结构不同 递归与迭代都是基于控制结构,都涉及重复结构 迭代用重复结构,迭代显式使用重复结构 递归用选择结构,递归通过重复函数调用实现重复 3、终止条件不同 迭代在循环条件失败时终止,迭代一直修改计数器

weixin_43801662的博客 1万+

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3217

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

Feizhai2的博客 4859

迭代和递归的理解和区别

最近做一些题经常会碰到迭代的方法解的,或者递归解法,容易搞混,特在此整理一下 一.递归: 由例子引出,先看看递归的经典案例都有哪些 1.斐波那契数列 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…… 这个数列从第三项开始,每一项都等于前两项之和。 2. 阶乘 n! = n * (n-1) * (n-2) * …* 1(n>0) 3.汉诺塔问...

围巢 10万+

别再手动对照了!用Python+ArcGIS Pro一键搞定三调数据转土地三大类

本文介绍如何利用Python和ArcGIS Pro实现三调数据向土地三大类的自动化转换,大幅提升国土空间规划和土地变更调查的工作效率。通过封装分类规则为Python函数并集成到ArcGIS Pro脚本工具中,解决了传统手动操作耗时且易错的问题,适用于大规模数据处理场景。

weixin_29081101的博客 304

循环迭代遍历递归的区别

原地址:https://www.cnblogs.com/johnny1024/p/8125182.html loop、iterate、traversal和recursion这几个词是计算机技术书中经常会出现的几个词汇。众所周知,这几个词分别翻译为:循环、迭代、遍历和递归。乍一看,这几个词好像都与重复(repeat)有关,但有的又好像不完全是重复的意思。那么这几个词到底各是什么含义,有什么区别和联...

wang13342322203的博客 1995

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py...

man_tou_22 1万+

安卓新奇玩机工具全攻略___联发科MTK v6 限时免费 刷写固件工具操作

摘要:该文介绍一款限时免费的联发科V6刷机工具,支持小米、Vivo、Moto等多品牌设备,包括红米Note14Pro等机型(Klimt/Goya等代码)。工具需注册使用,提供EFS分区备份功能。作者提示工具可能触发杀毒警报,强调禁止非法用途,并说明部分联网工具可能失效。

小马哥的专栏 1310

迭代 与 循环的区别、迭代和递归的区别

迭代和循环的效率都取决于循环的次数和执行的代码。在循环次数相同的情况下,迭代的效率通常比循环低,因为迭代需要根据上次执行的结果来进行下一次执行,而循环的执行结果是相同的,不需要进行额外的计算。在一些编程语言中,迭代和循环的语法是不同的,例如Python和Ruby中的迭代语法和Java和C++中的循环语法是不同的。从概念上来看,迭代强调的是根据上一次执行的结果来进行下一次执行,而循环强调的是每次执行的结果都是相同的。从实现的方式上看,迭代的执行次数是不确定的,而循环的执行次数是确定的。

zxf347085420的博客 2086

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5048

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

从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。递归与普通循环的区别是:循环是有去无回,而递归则是有去有回(因为存在终止条件)。 以斐波那契数列作为例子进行对比:`递归: int fib...

QBXxxxx的博客 744

基于Matlab生成并可视化多架飞机轨迹仿真(附源码)

这使我们可以轻松地对直线和恒定转弯进行建模,并具有额外的自由度,可以在直线段和曲线段之间平滑过渡。同样,空气中的物体会经历重力的影响,遵循抛物线(二次)路径。需要更多的航点来适应这些变化,但是轨迹的其余部分需要更少的点。第三个轨迹,如下所示,代表了一架速度更高的飞机。它由两个恒定的转弯组成,飞机在第二个转弯的中间减速。一旦知道(并设置了)物体穿过空间的物理路径,物体的速度作为行进距离的函数就通过三次埃尔米特插值来确定。在此示例中,学习了内部使用的插值符背后的概念,并展示了如何使用少量航点重现场景。

珞瑜的博客 5463

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

迭代和递归的区别

概念递归:程序调用自身的编程思想,即一个函数调用本身。一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口。递归分为两个阶段:1)递推:把...

XINGKONG_04的博客 893

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 回溯法子集树与排列树
下一篇: Prim算法和Kruskal算法
黄玮鹏
博客等级 码龄17年 262粉丝 20原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值