Java 中的递归和迭代有什么区别?
javaobject oriented programmingprogramming
递归和迭代都重复执行一组指令。递归是指函数中的语句重复调用自身。迭代是指循环重复执行,直到控制条件变为 false。递归和迭代之间的主要区别在于递归是一个过程,始终应用于函数,而迭代应用于我们希望重复执行的指令集。
递归
- 递归使用选择结构。
- 如果递归步骤不能以收敛于某些条件(基本情况案例)的方式减少问题,则会发生无限递归,并且无限递归会导致系统崩溃。
- 当识别出基本情况时,递归终止。
- 递归通常比慢由于维护堆栈的开销,递归会占用比迭代更多的内存。
- 递归使代码更小。
示例
public class RecursionExample { public static void main(String args[]) { RecursionExample re = new RecursionExample(); int result = re.factorial(4); System.out.println("Result:" + result); } public int factorial(int n) { if (n==0) { return 1; } else { return n*factorial(n-1); } } }
输出
结果:24
迭代
- 迭代使用重复结构。
- 如果循环条件测试从未变为假,则迭代会发生无限循环,并且无限循环重复使用 CPU 周期。
- 当循环条件失败时,迭代终止。
- 迭代不使用堆栈,因此它比递归更快。
- 迭代消耗更少的内存。
- 迭代使代码更长。
示例
public class IterationExample { public static void main(String args[]) { for(int i = 1; i <= 5; i++) { System.out.println(i + " "); } } }
输出
1 2 3 4 5