第六章【迭代与递归的区别】

      迭代与递归各基于一种控制结构:迭代利用循环结构(for、while或do/while)、递归利用选择结构(if,if/else或swich)。迭代和递归都涉及循环:迭代清楚地使用循环结构,递归通过反复的方法调用来实现循环。迭代和递归都包含循环终止检查:迭代是当寻黄条件不满足时终止,递归是当识别出基本问题时终止。迭代用计数器控制循环;递归逐渐逼近基本问题而终止:迭代不停地修改计数器的值,直到它不满足循环条件;递归不断地对问题进行简化为基本问题为止。迭代和递归都有可能无限进行下去:如果迭代中的循环测试结果永远为真,就会产生无限循环;如果递归步骤每次不能简化问题使之收敛于基本问题,就会产生无穷递归。

 

      递归有多种负面影响。方法的反复调用会带来大量的开销,耗费大量的处理器时间和内存空间。每次递归调用都产生方法(实际上只是方法的变量)的副本,这要占用可观的内存空间。而迭代很一般只在方法内进行,所以不会有重复的方法调用带来的开销以及额外的内存占用。

 

       任何可以递归解决的问题同样可以迭代(非递归)解决。通常选择递归而不用迭代解题是因为递归更自然地放映了该问题本质,并且使程序易于理解和调试。常常,递归程序只需几行代码而对应的迭代程序可能需要多行代码。另一个理由是迭代法有时并不是显而易见的。

你可能感兴趣的:(测试)