数学[ 编辑]
迭代在数学可以指的过程进行迭代的函数即反复施加的函数,使用来自一个迭代作为输入到下一个的输出。迭代显然简单的函数会产生复杂的行为和困难的问题 - 例如,参见Collatz猜想和玩杂耍的序列。
数学中迭代的另一个用途是迭代方法,用于产生对某些数学问题的近似数值解。牛顿的方法是迭代方法的一个例子。手动计算一个数的平方根是一个常见的用法和一个众所周知的例子。
计算[ 编辑]
计算迭代是在计算机程序中标记出一段语句的技术,用于定义的重复次数。据说这个语句块被迭代 ; 计算机科学家也可能指报表的该块作为一个 “迭代”。
下面的伪代码是一个迭代的例子; for循环的括号之间的代码行将“迭代”三次:
a = 0 我从1到3 //循环三次 { a = a + i //将i的当前值添加到a中 } 打印//打印数字6(0 + 1; 1 + 2; 3 + 3)
允许并经常需要使用来自括号内语句块之外的程序其他部分的值来执行所需的功能。在上面的例子中,代码行使用增量的i值。
教育[ 编辑]
在一些教学学校中,迭代被用来描述教学或指导学生重复实验,评估或项目的过程,直到找到更准确的结果,或者学生掌握了技术技能。这个想法是在古老的格言“练习变得完美”中找到的。具体而言,“迭代”被定义为“循环式探究的学习和发展过程,为人们重新思考和批判性思考提供了多重机会”。[1]
与计算和数学不同,教育迭代不是预先确定的; 相反,任务重复,直到成功根据一些外部标准(通常是一个测试)被实现。
与递归的关系[ 编辑]
在算法情况下,递归和迭代可以被用于相同的效果。主要的区别是递归可以被用来作为一个解决方案,而不需要事先知道该动作将重复多少次,而成功的迭代需要预知。
一些类型的编程语言(称为函数式编程语言)被设计成使得它们不像for循环那样设置用于明确重复的语句块。相反,这些编程语言专门使用递归。执行代码块不是将一段代码重复预定义的次数,而是将要完成的工作“划分”为单独的数个部分,然后代码块在每个单独的部分上执行。每一件作品都会被重复划分,直到作品的“数量”尽可能地小,在这一点上,算法会很快完成这项工作。该算法然后“反转”并重新组装成完整的整体。
递归的典型例子是列表排序算法,如合并排序。合并排序递归算法将首先重复将列表分成连续的对; 然后对每一对进行排序,然后对每一对连续的对进行排序,依此类推,直到列表中的元素达到所需顺序。
下面的代码是Scheme编程语言中递归算法的一个例子,它将输出与前一个标题下的伪代码相同的结果。
(让迭代 ((我 1 ) (一 0 ))
(如果(<= 我 3 )
(迭代 (+ 我 1 ) (+ 一个 我))
(显示一个)))
其他术语[ 编辑]
在面向对象的编程中,迭代器是一个对象,它确保对不同数据结构范围的迭代以相同的方式执行,从而节省了后续编码尝试中的时间和精力。
一个iteratee是接受或迭代期间拒绝数据的抽象。