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

Java 递归

Java 递归

在本教程中,您将了解 Java 递归函数及其优缺点。

在 Java 中,调用自身的方法称为递归方法。而且,这个过程称为递归。

一个物理世界的例子是放置两个相互面对的平行镜子。它们之间的任何对象都会被递归反射。


递归是如何工作的?

<图>

在上面的例子中,我们调用了 recurse() main 内部的方法 方法。 (正常的方法调用)。而且,在 recurse() 方法中,我们再次调用了相同的递归方法。这是一个递归调用。

为了停止递归调用,我们需要在方法内部提供一些条件。否则,方法会被无限调用。

因此,我们使用 if...else 语句(或类似方法)来终止方法内部的递归调用。


示例:使用递归的数字的阶乘

class Factorial {

    static int factorial( int n ) {
        if (n != 0)  // termination condition
            return n * factorial(n-1); // recursive call
        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() 的方法 . factorial()main() 调用 方法。 编号 作为参数传递的变量。

在这里,注意声明,

return n * factorial(n-1);

factorial() 方法正在调用自己。最初,在 factorial() 中 n 的值为 4 .在下一次递归调用期间,将 3 传递给 factorial() 方法。这个过程一直持续到 n 等于0。

n 等于0,if 语句返回 false 因此返回 1。最后将累加的结果传给main() 方法。


析因程序的工作

下图将让您更好地了解阶乘程序是如何使用递归执行的。

<图>

递归的优缺点

当进行递归调用时,变量的新存储位置会在堆栈上分配。当每次递归调用返回时,旧的变量和参数都会从堆栈中删除。因此,递归通常会使用更多的内存并且通常很慢。

另一方面,递归解决方案更简单,编写、调试和维护的时间更少。

推荐阅读:递归的优缺点是什么?


java

  1. Java 运算符
  2. Java 接口
  3. Java try-with-resources
  4. Java 注释
  5. Java 注释类型
  6. Java 中的 String Length() 方法:如何通过示例查找
  7. Java String charAt() 方法及示例
  8. Java String endsWith() 方法及示例
  9. Java String replace()、replaceAll() 和 replaceFirst() 方法
  10. 如何使用递归在 Java 中反转字符串
  11. Java - 覆盖
  12. C - 递归