亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 递归详解:原理、阶乘示例与优劣势权衡

Java 递归

本指南讲解 Java 递归方法原理,通过经典阶乘示例演示,并评估递归的优缺点。

在 Java 中,调用自身的方法称为递归方法,该技术称为递归。一个直观的现实类比是两面镜子相对:每个倒影都是另一个镜像,不断重复直到光线被吸收。


递归如何工作

Java 递归详解:原理、阶乘示例与优劣势权衡

上图中,recurse() 方法从 main() 被调用 —— 这是普通调用。在 recurse() 内部,同一方法再次调用自身,形成递归调用。为防止无限循环,每次递归调用必须包含终止条件,通常用 if…else 实现。


示例:递归计算阶乘

class Factorial { static int factorial(int n) { if (n != 0) // 终止条件 return n * factorial(n - 1); // 递归调用 else return 1; } public static void main(String[] args) { int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); } }

输出:

4 factorial = 24

factorial() 从 main() 接收参数 number。方法内

return n * factorial(n-1);
导致方法以递减值再次调用自身。从 n = 4 开始,调用链:4 → 3 → 2 → 1 → 0。当 n 为 0 时,if 条件失败,返回 1。累乘结果随后沿调用栈回传至 main()。


阶乘程序执行过程图解

下图展示执行期间调用栈的演变。

Java 递归详解:原理、阶乘示例与优劣势权衡

递归的优缺点

总体而言,递归以更高内存占用和潜在性能开销换取优雅解法。对于深度有限的场景,这种权衡往往值得。

推荐阅读:递归的优缺点有哪些?

java

  1. C 语言递归编程精要:最佳实践与退出条件设计
  2. 精通 Java 运算符:类型、语法与实战示例
  3. 精通 Java 接口:概念、实现与最佳实践
  4. 精通 Java Try-With-Resources:自动资源管理详解
  5. Java 注解详解:类型、放置位置与实战示例
  6. Java 注解类型完全指南:预定义、自定义与元注解
  7. Java String length() 方法:获取字符串长度(示例)
  8. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  9. 精通 Java String.endsWith():检查字符串后缀(示例)
  10. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解
  11. Java 递归反转字符串:原理、代码实现与性能分析
  12. Java 方法重写详解:规则、多态调用与 super 协作