zoukankan      html  css  js  c++  java
  • 循环、递归、遍历、迭代的区别

    表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

    循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.

    递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

    // 迭代,重复一定的算法,达到想要的目的。数学上二分法,牛顿法是很好的迭代例子
    function iteration(x){
    var sum=1;
    for(x; x>=1; x--){
    sum = sum*x;
    }
    }

    // 递归,自身调用自身的迭代就是递归。
    // 但是正式定义好像不是这么说的。这只是我个人理解
    function recursion(x){
    if(x>1){
    return x*recursion(x-1);
    }else{
    return 1;
    }
    }

    迭代式开发:迭代式开发应该是取自"迭代(数学)"的概念的, 意思是把开发过程划分成若干个小目标, 对每个小目标单独进行设计, 开发, 测试, 逐步地完成整个项目. 而传统的开发过程是纯线性的, 先统一设计, 再统一编码, 再统一测试. 相比于传统开发过程, 迭代式开发更灵活, 能够适应需求的变更, 及时验证设计的可行性等等的...

    迭代开发更接近循环的意思,是指多次按照开发,测试,发布这样的周期循环来完成一个软件产品的最终发布。而不是试图一次性完成所有工作,发布最终版本

    结论:
    循环(loop) - 最基础的概念, 所有重复的行为
    递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况
    (数学)迭代(iterate) - 在多次循环中逐步接近结果
    (编程)迭代(iterate) - 按顺序访问线性结构中的每一项
    遍历(traversal) - 按规则访问非线性结构中的每一项
    这些概念都表示“重复”的含义, 彼此互相交叉, 在上下文清晰的情况下, 不必做过于细致的区分.

  • 相关阅读:
    动态规划____类数字三角形
    动态规划____编辑距离
    123
    pair queue____多源图广搜
    JAVA练习01
    leetcode — binary-tree-maximum-path-sum
    leetcode — best-time-to-buy-and-sell-stock-iii
    leetcode — best-time-to-buy-and-sell-stock-ii
    leetcode — best-time-to-buy-and-sell-stock
    leetcode — triangle
  • 原文地址:https://www.cnblogs.com/Ace33/p/13197057.html
Copyright © 2011-2022 走看看