迭代 订阅
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对前一次所得结果施行相同的运算步骤得到的。例如利用迭代法*求某一数学问题的解。对计算机特定程序中需要反复执行的子程序*(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。 展开全文
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对前一次所得结果施行相同的运算步骤得到的。例如利用迭代法*求某一数学问题的解。对计算机特定程序中需要反复执行的子程序*(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。
信息
领    域
数学、工程
适用范围
数学计算
特    点
重复反馈过程的活动
中文名
迭代
模    型
RUP
外文名
iteration
迭代相关概念
在数学中,迭代函数是在分形和动力系统中深入研究的对象。迭代函数是重复的与自身复合的函数,这个过程叫做迭代。迭代模型是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
收起全文
精华内容
参与话题
问答
  • 递归和迭代

    万次阅读 多人点赞 2017-04-13 14:35:21
    一、对比 ... 其中,迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。  2、算法结束方式不同  递归循环中,

    一、对比

    相同点:

    • 递归和迭代都是循环的一种。

    不同点:

          1、程序结构不同

    • 递归是重复调用函数自身实现循环。
    • 迭代是函数内某段代码实现循环。

            其中,迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

          2、算法结束方式不同

    •  递归循环中,遇到满足终止条件的情况时逐层返回来结束。
    • 迭代则使用计数器结束循环。

            当然很多情况都是多种循环混合采用,这要根据具体需求。

          3、效率不同

    • 在循环的次数较大的时候,迭代的效率明显高于递归。(参见二中实例3)


     二、实例

    1、递归:给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为2的整数倍。

    int Find(int *ary,int index,int len,int value)
    {
        if(len==1)//最后一个元素
        {
            if (ary[index]==value)return index;//成功查询返回索引
            return -1;//失败,返回-1
        }
        //如果长度大于1,进行折半递归查询
        int half=len/2;
        //检查被查值是否大于上半部分最后一个值,如果是则递归查询后半部分
        if(value>ary[index+half-1])
            return Find(ary,index+half,half,value);
        //否则递归查询上半部分
        return Find(ary,index,half,value);
    }
    2、迭代:实数累加,比如计算1-100所有实数的和。
    int v=1;
    for(i=2;i<=100;i++)
    {
        v=v+i;
    }
    3、综合应用(斐波那契数列分别用递归和迭代实现)

    问题:如果兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子,假设所有兔子都不死,那么一年后可以繁殖出多少对兔子?


    分析:前面相邻两项之和,构成了后一项。如图,


    数学定义:


    代码实现:

    #include "stdio.h"
    
    int Fbi(int i)  /* 斐波那契的递归函数 */
    {
    	if( i < 2 )
    		return i == 0 ? 0 : 1;  
        return Fbi(i - 1) + Fbi(i - 2);  /* 这里Fbi就是函数自己,等于在调用自己 */
    }  
    
    int main()
    {
    	int i;
    	int a[40];  
    	printf("迭代显示斐波那契数列:\n");
    	a[0]=0;
    	a[1]=1;
    	printf("%d ",a[0]);  
    	printf("%d ",a[1]);  
    	for(i = 2;i < 40;i++)  
    	{ 
    		a[i] = a[i-1] + a[i-2];  
    		printf("%d ",a[i]);  
    	} 
    	printf("\n");
    	
    	printf("递归显示斐波那契数列:\n");
    	for(i = 0;i < 40;i++)  
    		printf("%d ", Fbi(i));  
        return 0;
    }
    运行结果:



    运行过程显示,在循环的次数较大的时候,迭代的效率明显高于递归。上述例子中,笔者看到,迭代的结果全部打印完成耗时不到0.5s,而递归的结果前两排打印完耗时在1s内,最后一排的每个数据打印越来越慢,特别是最后一个数据,待到倒数第二个打印后,约3-4s才打印出来。究其原因,大量的递归调用会建立函数的副本,会耗费大量的时间和内存。而迭代则不需要反复调用函数和占用额外的内存


    转载请注明出处:

    http://blog.csdn.net/daijin888888/article/details/70157153





    展开全文
  • 究竟什么是迭代

    多人点赞 2019-12-04 20:50:18
    迭代,这个词我以前是没听过(学编程的童鞋可能很早就知道它),现在回想一下,我觉得这个词应该是在智能手机出现后,才被吃瓜群众广泛传播和应用的。 有一个词和“迭代”意思比较接近,叫“升级”,这个词我就很...

    最近读了一篇我觉得写的特别好的一篇文章,受益匪浅
    来源:简书
    作者:韩同志

    最近几年有一个词,频繁的出现,很多人都把它挂在嘴边,甚至它变的很时髦,这个词叫——

    迭代

    迭代,这个词我以前是没听过(学编程的童鞋可能很早就知道它),现在回想一下,我觉得这个词应该是在智能手机出现后,才被吃瓜群众广泛传播和应用的。

    有一个词和“迭代”意思比较接近,叫“升级”,这个词我就很熟悉,也非常好理解。比如,Windows每年都会升级一次,从95到XP再到现在的win7;应用软件每年都会出一个新版本,比如PS5.0到PScs,这是升级。

    相反,刚听到“迭代”这个词的时候,我大致好像能理解它的意思,但仔细想想,却又觉得很费解。

    为此我查过百度,而且查过很多遍,因为不理解,所以查完就忘,下次想起就又查,反反复复很多次,还是没搞明白。

    百度对“迭代”是这样定义的:

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

    本来还似懂非懂,看了这个定义后,我是彻底瞎。

    我真正开始理解“迭代”的含义,还真不是靠查出来的,也不是把这个概念背了下来,而是在生活中慢慢搞懂了。

    说一个我自己的故事。

    我是一个读书奇慢的人。记得上学那会儿,别人一天就可以看完一本很厚的武侠小说,而我吭哧吭哧可能一个月都看不完。我经常爱问别人一个问题:

    你读书,是一个字一个字看呢,还是一行一行的看呢?

    那个时候,我非常羡慕那些读书快的人。

    有一次我听说有位大神,一年可以读一百本书。我算了一下,照这个读法,一周至少要读2本,如果一本书按250面计算,那么每天应该读250×2÷7≈72面。

    我们都知道,做一个任务时,只要把这个任务进行分解,分解的越细,就越好执行,越容易达成目标。

    经过拆解,我发现100本书这个任务,难度好像不算特别大,也很有规律,于是我准备挑战下自己。

    我买来一堆书,然后给自己规划好,今天读多少页,明天读多少页,一周要达到多少,还专门买了个小本每天记录,然后呢?然后就没有然后了。

    表面看,这个计划完美无缺,有目标,有规划性,甚至每一天做什么,做多少,都那么一目了然,但是执行起来,发现却根本不是一回事儿。

    看似读100本书,是一个确定性的目标,其实它充满了无数的不确定性。

    我们假设读72面书需要1个小时,那你每天都能保证自己抽出这一个小时吗?

    假设你能保证每天抽1个小时,那你能保证你读完72面就都理解了吗?

    实际情况很可能是这样的:当你读一本书到第四章,忽然发现第一、二、三章之前压根就没读懂,于是又折返回去重新读。

    于是,你读第一、二、三章用的时间可能是你计划时间的2倍甚至更多。

    实在是坚持不下来啊,没办法,我放弃了读100本书的目标,把注意力从数量上开始转移到质量上。

    大概坚持读了两年之后,我读书的速度不知不觉的比以前快了很多,虽然一年还是读不了100本书,但是读个30几本书还是可以做到的。

    现在回想一下,如果把我一年读完的这30本书,按之前那种规划,把30本书平均分配到一年的365天去读,我是无论如何也做不到的。

    但有一件事我做到了,就是每天都抽出时间读书,也许是一个小时,也许是半个小时,也许是一刻钟。

    因为每天都读,于是读的东西越来越多,所以当看到某本书有相同或者类似的内容,我就直接扫读了。

    因为每天都读,于是对某个领域知道的就更深入,所以当看到某本书里比较浅显的部分,我就直接跳读了。

    因为每天都读,于是理解能力增强了,所以以前可能读完后,需要再花10分钟去理解的,现在只需要5分钟,所以我读书的速度变快了。

    有趣的是,当我做到了每年30本书,再来看每年100本书这个目标,觉得没有当初那么难了,是可以实现的,并且对如何实现也有了一个比较靠谱的认知,大概知道该怎么推进。

    所以,当初设定每年100本书这个目标,并没有错,起码它给了你行动之前的一个设想,在你前行的路上插了一杆旗。

    我们不可能在毫无规划、毫无设想的情况下就起步,只不过这样的设想、这样的规划,它只是一个起点。

    当你有了这个起点,然后放在一个真实的场景中,去做一件事的时候,你会发现,通过纯粹的规划,是解决不了问题的,但也不能毫无方向,想到哪做到哪,像无头苍蝇一样去实现目标。

    这个过程很像打游戏,你刚开始玩,一下子就输了,但是随着你玩的次数越来越多,你的技艺就越来越精湛,而这个结果,不是你在开始玩游戏的时候,规划出来的,而是在你玩的过程中,通过不断的输不断的输,练出来的。

    所以,你能达成的结果,都是在你做的过程中,不断试错,不断调整,不断精进,最后自然而然得到的一个结果。

    所以,我们不能把迭代简单的理解为“升级”。

    升级,更多描述的是一个结果,是一种直接的,一次性的,达成的一个目标,是一种线性的进程。

    而迭代,是通过无数次,不断的,重复的,接近一个目标,折返接近,再折返再接近,最终达到目标。它不是一次性完成的,是通过不断重复的,但每次重复又比之前更好一点,这样一种非线性的进程。

    为什么我的目标原来是100本书,现在只做到了30本书,连一半都没达到,我却认为自己对达成100本书这个目标,反而更清晰了呢?

    这是因为在不断的迭代过程中,我的认知升级了,于是我对达到目标的规划更清晰了,尽管这个清晰度,也会随着迭代的过程再次变得不同。

    现在我们把“迭代”的关键词拆解一下:

    1.重复

    不断的重复做,而不是一次性的完成。

    2.改进

    在做的过程中不断的改进、调整、优化。

    3.认知升级

    迭代的过程就是不断提高认知的过程,升级只是这个过程的一个结果。

    展开全文
  • 什么是迭代

    万次阅读 2018-09-05 21:45:17
    迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。 重复执行一系列运算步骤,从前面的量依次求出后面的量...

    迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
    重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对前一次所得结果施行相同的运算步骤得到的。例如利用迭代法求某一数学问题的解。
    对计算机特定程序中需要反复执行的子程序
    (一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。

    有一篇文章详细的描述了“迭代”一词的理解方式https://www.jianshu.com/p/1a0b810e0a8b

    展开全文
  • 迭代算法的经典案例

    千次阅读 2015-06-19 10:12:51
    Fibonacci数列:第3个数等于前面2个数字之和 汉诺塔:从小到大叠加的同心圆,从一根柱子移动到另一根柱子
    1.  Fibonacci数列:第3个数等于前面2个数字之和
    2.  汉诺塔:从小到大叠加的同心圆,从一根柱子移动到另一根柱子
    展开全文
  • 迭代是人,递归是神(迭代与递归的总结:比较)

    万次阅读 多人点赞 2018-04-16 22:15:26
    https://blog.csdn.net/LG1259156776/article/details/46849809在计算机编程实现中有常常两种方法:一曰迭代(iterate);...从“编程之美”的角度看,可以借用一句非常经典的话:“迭代是人,递归是神!...
  • 迭代

    2018-12-10 19:06:00
    for c in s: # 字符串是一个可迭代对象 print(c) for c in "哼哼哈哈": print(c) for i in 123: # 'int' object is not iterable print(i) dir() 可以帮我们查看xxx数据能够执行的操作...
  • 你真的知道敏捷和迭代吗?

    万次阅读 2017-07-11 09:06:07
    在这敏捷开发横行的时代中,人人都在谈敏捷,人人都在谈迭代,似乎大家好像都尝到了敏捷带来的甜头,记得有一次跟朋友吃饭,说他们现在的项目用敏捷开发,每个迭代都能看到不断完善的产品,非常有成就感,客户的满意...
  • 迭代和递归的理解和区别

    万次阅读 多人点赞 2019-05-08 13:44:59
    最近做一些题经常会碰到迭代的方法解的,或者递归解法,容易搞混,特在此整理一下 一.递归: 由例子引出,先看看递归的经典案例都有哪些 1.斐波那契数列 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1...
  • 迭代的含义及操作

    千次阅读 2016-06-23 17:02:24
    迭代的基本含义:基本:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。 计算机:在...
  • 迭代算法与递归算法的概念及区别

    万次阅读 2019-04-30 14:19:20
    迭代算法是用计算机处理问题的一种基本方法。它利用计算机运算速度快、适合做重复性操做的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。...
  • 【C++】:STL迭代器使用详解,很好很详细

    万次阅读 多人点赞 2016-05-12 22:28:27
    写在前面,迭代器这种东西,就是为了使访问简单!! 容器::iterator iter; for(iter= 容器.begin();iter!=容易.end();iter++){ coutfirst等等之类的 //迭代器就是这么个套路 } 然后就是set,set就是一个集合,仅...
  • Python迭代器及自定义迭代器

    千次阅读 多人点赞 2019-05-19 20:47:17
    Python迭代器及自定义迭代器 一、可迭代对象 在Python中,对list、tuple、str等类型的数据可以使用for...in...的循环语法,从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。 在Python的基本...
  • 迭代器萃取和反向迭代器

    千次阅读 2017-12-21 19:21:33
    迭代器是什么 迭代器是一种行为类似指针的对象,通过重载一些操作指针的如++,--,*,->,可以不知道容器的结构来访问容器。 为什么每一种容器都提供有专属的迭代器 要设计出一个容器的迭代器就必须对这个容器...
  • Java 迭代器综述

    千次阅读 2016-12-06 15:40:27
    迭代器模式是与集合共生共死的。一般来说,我们只要实现一个容器,就需要同时提供这个容器的迭代器。使用迭代器的好处是:封装容器的内部实现细节,对于不同的集合,可以提供统一的遍历方式,简化客户端的访问和获取...
  • 迭代器

    2018-05-21 18:43:34
    迭代器是泛化的指针,STL算法利用迭代器对存储在容器中的元素序列进行遍历,迭代器提供了访问容器中每个元素的方法。虽然指针也是一种迭代器,但迭代器却不仅仅是指针。迭代去更为抽象,它可以指向容器中的一个位置...
  • JAVA设计模式--迭代器模式

    万次阅读 2017-02-11 13:01:59
    一、什么是迭代器模式 二、迭代器模式的结构 三、翻页迭代 四、迭代器模式的适用性 五、迭代器模式的优点 六、总结 一、什么是迭代器模式 迭代器(Iterator)模式又叫作游标(Cursor)模式,是一种对象的行为模式...
  • STL迭代器   作为STL六大组件之一Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元
  • C++中STL各个迭代器详解

    千次阅读 2019-04-01 23:04:54
    1、自C++11起可以用range-based for循环来所有元素,但有时并不需要处理所有元素,此时可以使用迭代器。 std::vector<int> vec {1,2,3,4,5,6,7,8,9,10}; for (auto n : vec){ std::cout << n <<...
  • python迭代器高级例子

    万次阅读 2018-08-27 22:28:52
    def next(self):方法来实现协议 2. 写一个实现迭代器协议的类,让此类可以生成从b 开始的n个素数 class Prime: def init(self, b, n): … def iter(self): …. L = [x for x in Prime(10, 4)] print(L...
  • C++容器和迭代器

    万次阅读 多人点赞 2018-06-08 09:07:50
    一、顺序容器vector 1.1容器是什么 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型就叫做容器。简单理解,即容器就是保存其他对象的对象。...

空空如也

1 2 3 4 5 ... 20
收藏数 1,056,342
精华内容 422,536
关键字:

迭代