fbpx
维基百科

迭代

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

在数学中

 
一个五边形的迭代。将对角用直线段连起来得到一个五角星,后者中心围成了一个倒过来的小五边形。迭代地执行这一过程会产生一系列嵌套的五边形和五角星。

数学中的迭代可以指函数迭代的过程,即反复地运用同一函数计算,前一次迭代得到的结果被用于作为下一次迭代的输入。即使是看上去很简单的函数,在经过迭代之后也可能产生复杂的行为,衍生出具有难度的问题。这样的例子可以参见考拉兹猜想和杂耍者序列(Juggler sequence)。又如一个简单的二次变换x→x(1-x),它的迭代将形成一个具有混沌性质的动力系统

迭代在数学中的另一应用是迭代法,用来对特定数学问题作数值解估计。牛顿法就是迭代法的一个例子。

在電腦中

在计算机科学中,迭代程序中对一组指令(或一定步骤)的重复。它既可以被用作通用的术语(与“重复”同义),也可以用来描述一种特定形式的具有可变状态的重复。

在第一种意义下,递归迭代的一个例子,但是通常使用一种递归式的表达。比如用0!=1,n!=n*(n-1)!来表示阶乘。而迭代通常不是这样写的。

而在第二种(更严格的)意义下,迭代描述了在指令式编程语言中使用的编程风格。与之形成对比的是递归,它更偏向于声明式的风格。

这里是一个依赖于破坏性赋值的迭代的例子,以指令式虛擬碼写成:

var i, a = 0 // 迭代前初始化 for i from 1 to 3 // 重复3次 { a = a + i // a的值增加i } print a // 打印出数字6 

在这个程序片段中,变量i的值会不断改变,依次取值1、2和3。这种改变赋值——或者叫做可变状态——是迭代的特征。 这里是二分法解方程的递归和迭代算法的比较。

递归:

确定开区间左边界和右边界,(L, R) 若L + 1 >= R(即不包含整数点),表示序列中不存在f(x) 取中位 M = (L + R) / 2 若f(M) == y,返回M 否则根据f(M)和y的关系递归查找(L, M)或(M, R) 

迭代:

确定边界(L, R) while (L + 1 < R) /* 区间中包含整点 */ 求中位M = (L + R) / 2 若f(M)等于y,退出循环 根据f(M)与y的关系执行 L = M 或 R = M,进入下一轮循环 

函数编程语言中,迭代可以用递归技巧来。

下述例子用Scheme语言写成。注意它是一个递归(迭代的特例),因为函数iter在解决问题时调用了自身。特别地,它使用了尾部递归,一种能被Scheme这样的编程语言完备支持的技巧,因此程序不会占用大量堆栈

;; sum : number -> number ;; to sum the first n natural numbers (define(sum n) (if (and (integer? n) (> n 0)) (let iter ([n n] [i 1]) (if (= n 1) i (iter (- n 1) (+ n i)))) ((assertion-violation 'sum "invalid argument" n)))) 

迭代器(iterator)就是一个封装了迭代的对象。

参见

迭代, iteration, 是重复反馈过程的活动, 其目的通常是为了接近並且到达所需的目标或结果, 每一次对过程的重复被称为一次, 而每一次得到的结果会被用来作为下一次的初始值, 在数学中, 编辑, 一个五边形的, 将对角用直线段连起来得到一个五角星, 后者中心围成了一个倒过来的小五边形, 地执行这一过程会产生一系列嵌套的五边形和五角星, 数学中的可以指函数的过程, 即反复地运用同一函数计算, 前一次得到的结果被用于作为下一次的输入, 即使是看上去很简单的函数, 在经过之后也可能产生复杂的行为, 衍生出具有难度的. 迭代 iteration 是重复反馈过程的活动 其目的通常是为了接近並且到达所需的目标或结果 每一次对过程的重复被称为一次 迭代 而每一次迭代得到的结果会被用来作为下一次迭代的初始值 在数学中 编辑 一个五边形的迭代 将对角用直线段连起来得到一个五角星 后者中心围成了一个倒过来的小五边形 迭代地执行这一过程会产生一系列嵌套的五边形和五角星 数学中的迭代可以指函数迭代的过程 即反复地运用同一函数计算 前一次迭代得到的结果被用于作为下一次迭代的输入 即使是看上去很简单的函数 在经过迭代之后也可能产生复杂的行为 衍生出具有难度的问题 这样的例子可以参见考拉兹猜想和杂耍者序列 Juggler sequence 又如一个简单的二次变换x x 1 x 它的迭代将形成一个具有混沌性质的动力系统 迭代在数学中的另一应用是迭代法 用来对特定数学问题作数值解估计 牛顿法就是迭代法的一个例子 在電腦中 编辑参见 迭代式开发 在计算机科学中 迭代是程序中对一组指令 或一定步骤 的重复 它既可以被用作通用的术语 与 重复 同义 也可以用来描述一种特定形式的具有可变状态的重复 在第一种意义下 递归是迭代的一个例子 但是通常使用一种递归式的表达 比如用0 1 n n n 1 来表示阶乘 而迭代通常不是这样写的 而在第二种 更严格的 意义下 迭代描述了在指令式编程语言中使用的编程风格 与之形成对比的是递归 它更偏向于声明式的风格 这里是一个依赖于破坏性赋值的迭代的例子 以指令式的虛擬碼写成 var i a 0 迭代前初始化 for i from 1 to 3 重复3次 a a i a的值增加i print a 打印出数字6 在这个程序片段中 变量i的值会不断改变 依次取值1 2和3 这种改变赋值 或者叫做可变状态 是迭代的特征 这里是二分法解方程的递归和迭代算法的比较 递归 确定开区间左边界和右边界 L R 若L 1 gt R 即不包含整数点 表示序列中不存在f x 取中位 M L R 2 若f M y 返回M 否则根据f M 和y的关系递归查找 L M 或 M R 迭代 确定边界 L R while L 1 lt R 区间中包含整点 求中位M L R 2 若f M 等于y 退出循环 根据f M 与y的关系执行 L M 或 R M 进入下一轮循环 在函数编程语言中 迭代可以用递归技巧来 下述例子用Scheme语言写成 注意它是一个递归 迭代的特例 因为函数iter在解决问题时调用了自身 特别地 它使用了尾部递归 一种能被Scheme这样的编程语言完备支持的技巧 因此程序不会占用大量堆栈 sum number gt number to sum the first n natural numbers define sum n if and integer n gt n 0 let iter n n i 1 if n 1 i iter n 1 n i assertion violation sum invalid argument n 迭代器 iterator 就是一个封装了迭代的对象 参见 编辑迭代法 迭代函数 For循环 While循环 递归 取自 https zh wikipedia org w index php title 迭代 amp oldid 76544802, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。