迭代:利用变量的原值推出新值称为迭代,或着说迭代是函数内某段代码实现循环;
迭代:从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。这里可以看作是每次运行都变更条件的一个for循环。例如 for (i=1 , i<100 , i++) ,迭代就是自己执行很多次,每次都能排除一个,直到找到结果。
数组迭代:可以使用 for 语句来循环输出数组的各个元素
递归:重复调用函数自身实现循环称为递归;
递归就是,每次循环都包含自己的请求,子问题必须携带原始问题,且一次一次缩小范围,最终找到结果。
什么是递归函数:递归函数即在函数内调用函数本身。函数不断调用自己 就相当于不断地嵌套本函数
举个例子:
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"
搜索其他资料发现一些不错的想法,搬运了过来。
举个例子吧:你要给某个小孩子买玩具。
递归:你自己不太了解小孩子的需求,为了缩小范围,让你的儿子去给孙子挑选。儿子比你强点有限,但依然不太了解小孩子的需求。为了缩小范围,你又让你孙子去挑选。如此这般,直到找到合适的玩具。
迭代:
你去小卖铺买了个一个玩具,拿回家后孩子不喜欢。你耐心的询问后得知他喜欢乐高的玩具,于是你就去大超市给他买了乐高,回家后孩子还是不喜欢,耐心询问后得知他喜欢乐高玩具中最贵的那个玩具,于是你就去奢侈品商店给他买了乐高限量版玩具,拿回家后孩子很满意。
每次去买玩具都跟上一次不一样,或是有了新的目标,或是缩小了搜寻范围,自己执行很多次,每次都能排除一个,直到找到结果。这叫迭代。
所以一句话:递归是自己调用自己,每次旨在缩小问题规模。迭代是自己执行很多次,每次旨在更接近目标。
【循环】和【迭代】的区别:
循环和迭代的共同点在于,它们都是在描述一个多次操作。
不同点在于,【循环】侧重于描述每次操作和上一次操作相同之处,而【迭代】侧重于描述每次操作和上一次操作的不同之处。
比如一个 for 循环,其中的逻辑每次执行都相同,我们可以说它是一个循环。但 for 循环中定义的局部变量 i(每次循环自增的那个),每次执行都会有新的值代替旧的值,我们可以说它是在迭代。
如果硬要套用买玩具的例子:你要给某个小孩子买玩具。
【循环】
你去小卖铺买了一个玩具,拿回家后孩子不喜欢,你也没问他为什么不喜欢。然后你又去同一个小卖铺买了一个玩具,拿回家后孩子又不喜欢。。。如此往复 10 次,孩子才满意。
每次去买玩具的目标、行为都一样,这叫循环。
【迭代】
你去小卖铺买了个一个玩具,拿回家后孩子不喜欢。你耐心的询问后得知他喜欢乐高的玩具,于是你就去大超市给他买了乐高,回家后孩子还是不喜欢,耐心询问后得知他喜欢乐高玩具中最贵的那个玩具,于是你就去奢侈品商店给他买了乐高限量版玩具,拿回家后孩子很满意。
每次去买玩具都跟上一次不一样,或是有了新的目标,或是缩小了搜寻范围,这叫迭代。