English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá sobre las funciones recursivas de Java y sus ventajas y desventajas.
en Java, llamar a sí mismométodose llama al método recursivo. Y este proceso se llama recursión.
Un ejemplo del mundo físico es放置 dos espejos paralelos que se miran entre sí. Cualquier objeto entre ellos se reflejará recursivamente.
En el ejemplo anterior, llamamos al método recurse() desde el interior del método main. (llamada de método normal). Y dentro del método recurse(), llamamos nuevamente al mismo método recurse. Esto es una llamada recursiva.
Para detener las llamadas recursivas, necesitamos proporcionar algunas condiciones internamente en el método. De lo contrario, el método se llamará infinitamente.
por lo tanto, usamosif ... else statement(o método similar)detener la llamada recursiva interna.
class Factorial { static int factorial(int n) { if (n != 0) // condición de terminación return n * factorial(n-1); //llamada recursiva otro devolver 1; } public static void main(String[] args) { int number = 4, result; result = factorial(number); System.out.println(number + "factorial= " + result); } }
salida:
4 factorial= 24
在上面的示例中,我们有一个名为factorial()的方法。从main()方法调用factorial()。用传递的数字变量作为参数。
在这里,请注意以下语句:
return n * factorial(n-1);
factorial()方法正在调用自身。最初,n的值在factorial()内部为4在下一个递归调用期间,将3传递给factorial()方法。此过程一直持续到n等于0。
当n等于0时,if语句返回false,因此返回1最后,将累积的结果传递给main()方法。
以下图将使您更好地了解如何使用递归执行阶乘程序。
进行递归调用时,将在堆栈上分配新的变量存储位置。随着每个递归调用的返回,旧的变量和参数将从堆栈中删除。因此,递归通常使用更多的内存,并且通常很慢。
另一方面,递归解决方案要简单得多,并且花费更少的时间来编写、调试和维护。