John Squirrels
第 41 级
San Francisco

Java递归

已在 随机的 群组中发布

什么是Java递归?

函数或方法调用自身的情况称为递归,这样的函数或方法称为递归函数或递归方法。这种方法总是用于将复杂的问题分解为简单且更容易编写的问题。一个简单的例子是将两块镜子放在彼此前面,它们将开始递归地相互反射,您可以轻松看到。

间接递归

上面的例子代表了间接递归,即函数一调用函数二,函数二调用函数一。

直接递归

当一个方法一次又一次地调用自身时,称为直接递归

停止条件

现在你会想,如果一个方法一次又一次地调用自身,那么它肯定会面临堆栈溢出错误。是的,你是对的,就像无限循环一样,它可以进入无限递归。我们必须提供一个基本条件终止条件才能停止这种无限递归,这称为停止条件,并且该条件始终在递归方法内部提供,我们将在下面的示例中详细看到。

递归示例

class Recursion {

    static int factorial( int n ) {
        // base condition or termination condition
        if (n != 0)
        // here we are calling the recursive method
            return n * factorial(n-1);
        else
            return 1;
    }

    public static void main(String[] args) {
        // initializing the variables
        int number = 5, result;
        result = factorial(number);
        System.out.println(number + " factorial = " + result);

        // changing the value from 5 to 10
        number = 10;
        result = factorial(number); // recursive function call
        System.out.println(number + " factorial = " + result);
    }
}

示例输出

5 阶乘 = 120 10 阶乘 = 3628800
在这个递归方法示例中,我们有一个从 main 方法调用的函数阶乘。我们传递了一个值 5 来查看它的阶乘是多少,即 120。这个阶乘函数通过传递 4 的值再次调用自身,它再次调用并传递 3 的值,依此类推,直到停止条件满足met,即值为 0。当我们将值从 5 更改为 10 时,也会发生同样的情况。

递归的优点和缺点

递归代码易于编写、调试和维护,并且节省时间。但另一方面,每次调用都会消耗变量的内存,因此我们可能会耗尽内存。

结论

我们希望您了解 Java 递归以及如何实现它,以及它的优点和缺点。请随意练习,并在需要更多帮助时返回。快乐学习!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION