Java中的递归和迭代有什么区别?
递归和迭代都重复执行一组指令。递归是指函数中的语句反复调用自身。迭代是指循环反复执行,直到控制条件变为假。递归和迭代的主要区别在于,递归是一个过程,总是应用于函数;而迭代应用于我们想要反复执行的指令集。
递归
- 递归使用选择结构。
- 如果递归步骤没有以某种收敛于某个条件(基本情况)的方式减少问题,则会发生无限递归,无限递归可能导致系统崩溃。
- 当识别出基本情况时,递归终止。
- 由于维护堆栈的开销,递归通常比迭代慢。
- 递归比迭代使用更多内存。
- 递归使代码更简洁。
示例
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);
}
}
}输出
Result: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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP