迭代与递归的区别
1.含义不同
递归是重复调用函数自身实现循环。遇到满足终止条件的情况时逐层返回来结束
迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。迭代则使用计数器结束循环。
2.结构不同
递归与迭代都是基于控制结构,都涉及重复结构
迭代用重复结构,迭代显式使用重复结构
递归用选择结构,递归通过重复函数调用实现重复
3.终止条件不同
迭代在循环条件失败时终止,迭代一直修改计数器,直到计数器值使循环条件失败;
递归在遇到基本情况时终止,使用计数器控制重复的迭代和递归都逐渐到达终止点(递归不断产生最初问题的简化副本,直到达到基本情况。)
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
代码实现:不断重复调用某个方法,符合一定条件后,计算出结果值。常见的累加,累乘都是迭代算法策略的基础应用。
递归算法:实现思想一样,重复的调用方法。好理解,JVM运行慢
迭代算法:实现思想一样,重复的调用某段代码。不好理解,JVM运行快
实际:解决思路为第一!
迭代大部分时候需要人为的对问题进行剖析,将问题转变为一次次的迭代来逼近答案。迭代不像递归一样对堆栈有一定的要求,另外一旦问题剖析完毕,就可以很容易的通过循环加以实现。迭代的效率高,但却不太容易理解,当遇到数据结构的设计时,比如图‘表、二叉树、网格等问题时,使用就比较困难,而是用递归就能省掉人工思考解法的过程,只需要不断的将问题分解直到返回就可以了。
总结:迭代更为底层一些;递归更为高级一些,更抽象一些;所以,有“迭代为人,递归为神”的说法。