什么是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 时,也会发生同样的情况。
GO TO FULL VERSION