【发布时间】:2016-01-03 04:08:32
【问题描述】:
有人可以区分迭代和递归吗?两者在我看来都一样。我知道会有区别,但不知道是什么。请帮助我知道区别
【问题讨论】:
有人可以区分迭代和递归吗?两者在我看来都一样。我知道会有区别,但不知道是什么。请帮助我知道区别
【问题讨论】:
递归是指从同一个函数/方法中(直接或间接)调用函数/方法。这导致每个连续调用在堆栈(或任何地方)上都有其局部变量的副本,并且需要通过结束每个函数/方法并返回到上一个调用来在最后“展开”。 递归通常会导致代码相对较短,但在运行时会使用更多内存(因为所有调用级别都在堆栈上累积)
迭代是指多次执行相同的代码,更改某些变量的值,可能是更好的近似值或其他任何值。迭代发生在一层函数/方法调用中,不需要展开。
【讨论】:
希望这篇文章能给你解释一下: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;
}
【讨论】:
你通过重复一个函数来迭代。
例如,i 是迭代器:
for (i = 0; i < 10; i++){
function(input);
}
您通过使用自身内部的函数进行递归。
例子:
function(input){
if (input == outcome) {return;}
else {function(input+1);}
}
【讨论】: