发布时间:2025-12-09 13:38:59 浏览次数:3
迭代(Iteration)与递归(Recursion)是开发过程中常用的编程技巧,二者有相似,也有区别。
1、递归
简单地说,就是函数调用函数自己。
通常把相同规则的业务,定义为一个函数,通过函数的重复调用,完成整体业务的实现。用有限的语句来定义对象的无限集合。
比如,一个数字的阶乘计算,通过递归实现如下:
//递归 public static int recursion(int num){ if (num <= 1){ return 1; } else { return num * recursion(num - 1); } } public static void main(String[] args) { int result = recursion(5); System.out.println(result); }2、迭代
迭代是通过计算得到下一个计算初始值,并使用计算得到的值进行下一步的计算,直到不符合条件,计算结束。与递归的区别为,函数A调用其他函数B。
同样计算阶乘,使用迭代方法实现如下:
//迭代 public static int iteration(int num){ if (num <= 0){ return 1; } int result = 1; for (int i = num; i >= 1; i--){ result *= i; } return result; } public static void main(String[] args) { int result = iteration(5); System.out.println(result); }3、比较
①递归中一定有迭代,迭代中不一定有递归。多数情况下上二者可以相互转换。
②递归满足条件后,逐层返回,每层都计算完后才返回结果;迭代满足条件后,通过计数器结束循环,直接返回计算结果。递归与迭代相比较,效率低。
③能使用迭代,尽量不要使用递归,因为迭代会浪费空间,栈深不够,会出现StackOverflowError栈异常。