迭代,循环,遍历,递归的区别

循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。
                           [ 循环则技能对应集合,列表,数组等,也能对执行代码进行操作。]                      

迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。
                           [迭代只能对应集合,列表,数组等。不能对执行代码进行迭代。]                

遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
                            [遍历同迭代一样,也不能对执行代码进行遍历。]

递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
                           [线性递归和尾递归。]

原文地址:https://blog.51cto.com/13550695/2458719

时间: 2024-10-14 07:19:37

迭代,循环,遍历,递归的区别的相关文章

oc 文件操作,查看目录下所有文件包括子文件夹内包含的所有文件,循环遍历递归

FileManager.m #import "FileManager.h" @implementation FileManager + (void)showFiles:(NSString *)path;{ // 1.判断文件还是目录 NSFileManager * fileManger = [NSFileManager defaultManager]; BOOL isDir = NO; BOOL isExist = [fileManger fileExistsAtPath:path i

Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.1 1.2. 递归的定义是, 根据一种(几种)基本情况定义的算法, 其他复杂情况都可以被逐步还原为基本情况.1 1.3. 递归的基本概念和特点1 1.4. 迭代(数学): 在循环的基础上, 每一次循环, 都比上一次更为接近结果.2 1.5. 编程语言中的循环

编程算法 - 中序遍历 递归/迭代 代码(C)

中序遍历 递归/迭代 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 中序遍历(InOrder)作为二叉搜索树的排序方式, 有着重要的作用. 递归和迭代的方法都需要掌握, 迭代主要使用了栈(stack)进行输入输出. 代码: /* * main.cpp * * Created on: 2014.9.18 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> #inclu

二叉树的三种遍历方式的循环和递归的实现方式

///////////////////头文件:BST.h//////////////////////// #ifndef BST_H #define BST_H #include "StdAfx.h" #include<iostream> #include<stack> template<typename DataType> class BST { public: class Node { public: Node(int data=0):m_dat

[转]在计算机程序中,完成重复的任务有两种方式:递归和迭代(循环)。

在计算机程序中,完成重复的任务有两种方式:递归和迭代(循环) 递归的一个例子:从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“...... 循环的一个例子:炉子上有99锅汤,让我不小心喝了一锅,炉子上还有98锅汤;炉子上有98锅汤,让我不小心喝了一锅,炉子上还有97锅汤;炉子上有97锅汤,让我不小心喝了一锅,炉子上还有96锅汤; ...... http:

Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化

Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合  (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏有对性能方面问题的细微考虑. 对于速度的追求 首先,是一个免责声明: 相比其它问题而言,一个 Objective-C 方法原始的速度是你在编程时最后才需要考虑的问题之一 – 区别就在于这个问题够不上去同其它更加需要重点考虑的问题进行比较,比如说代码的清晰度和可读性. 但速度的次要性并不妨碍我们去理解

3循环与递归

循环设计中要注意算法的效率: 循环体的特点是:"以不变应万变". 所谓"不变"是指循环体内运算的表现形式是不变的,而每次具体的执行内容却是不尽相同的.在循环体内用不变的运算表现形式去描述各种相似的重复运算. [例1]求1/1!-1/3!+1/5!-1/7!+-+(-1)n+1/(2n-1)! 分析:此问题中既有累加又有累乘,准确地说累加的对象是累乘的结果. 数学模型1:Sn=Sn-1+(-1)n+1/(2n-1)! 算法设计1:多数初学者会直接利用题目中累加项通式,

二叉树的遍历--递归实现与非递归实现

二叉树的表示 在研究二叉树的遍历之前,我们需要先看看二叉树的表示方式. 一般来说,我们使用自定义的数据结构或是数组来表示二叉树. 二叉树的数据结构: public class TreeNode { public int val; // 左孩子 public TreeNode left; // 右孩子 public TreeNode right; } 数组形式表现二叉树 当我们使用数组形式表现二叉树时,我们将数组第一个节点的索引置为「1」,也就是根节点,如果我们通用性的将其当为「x」,那么它的左孩

Android中List循环遍历性能对比

在android开发中只要是列表式风格界面我们几乎都需要用到List来存放数据,在数量很少的List的话几乎任何一种循环遍历方式整体性能都无差别,但是当我们遇到数据量稍大的时候有必要考虑用哪种方式写起来比较高性能. 常见的有以下三种: 第一种 for (String s : tests) { // .... } 第二种 int size = tests.size(); for (int i = 0; i < size; i++) { tests.get(i); } 第三种 Iterator<S

javascript增加Array的each方法 循环遍历多维数组

由于ECMA提供遍历数组的方法forEach()只能遍历一维数组,没有提供循环遍历多维数组的方法,所以我们自己来实现一个each()方法,来遍历多维数组. <script charset=utf-8 type=text/javascript> /*var arr = [1,2,3,[4,[5]]]; arr.forEach(function(item,index,arr){ alert(item); }); */ //模拟ECMA forEach  循环遍历多维数组 var arr = [1,