【问题标题】:difference between recursion and iteration?递归和迭代的区别?
【发布时间】:2016-01-03 04:08:32
【问题描述】:

有人可以区分迭代和递归吗?两者在我看来都一样。我知道会有区别,但不知道是什么。请帮助我知道区别

【问题讨论】:

标签: recursion iteration


【解决方案1】:

递归是指从同一个函数/方法中(直接或间接)调用函数/方法。这导致每个连续调用在堆栈(或任何地方)上都有其局部变量的副本,并且需要通过结束每个函数/方法并返回到上一个调用来在最后“展开”。 递归通常会导致代码相对较短,但在运行时会使用更多内存(因为所有调用级别都在堆栈上累积)

迭代是指多次执行相同的代码,更改某些变量的值,可能是更好的近似值或其他任何值。迭代发生在一层函数/方法调用中,不需要展开。

【讨论】:

    【解决方案2】:

    希望这篇文章能给你解释一下:http://www2.hawaii.edu/~tp_200/lectureNotes/recursion.htm

    用伪代码解释:

    递归

    function f(x){
      do y;
       if(x<0){ return f(x-1) } else { return }
    }
    

    迭代

    for(x in 1 to 10){
       do y;
    }
    

    【讨论】:

      【解决方案3】:

      你通过重复一个函数来迭代。

      例如,i 是迭代器:

      for (i = 0; i < 10; i++){
          function(input);
      }
      

      您通过使用自身内部的函数进行递归。

      例子:

      function(input){
         if (input == outcome) {return;}
         else {function(input+1);}
      }
      

      【讨论】:

      • 感谢您的解释。我现在明白了..再次感谢
      猜你喜欢
      • 2011-02-04
      • 2013-11-16
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2021-12-24
      相关资源
      最近更新 更多