Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Recursión | Métodos
Java Avanzado
course content

Contenido del Curso

Java Avanzado

Java Avanzado

1. Estructura Profunda de Java
2. Métodos
3. String Avanzado
4. Clases
5. Clases Avanzadas

book
Recursión

¿Cómo romper fácilmente tu código?

¿Por qué esto puede romper el código? Porque puede llevar a una recursión infinita, lo que consumirá memoria sin fin y reducirá el rendimiento del dispositivo. Entonces, ¿por qué necesitamos la recursión? En algunos casos, la recursión puede ser útil, pero debe usarse con precaución. Por ejemplo, la recursión puede reemplazar un bucle while. Veamos un ejemplo de uso de la recursión para calcular la suma de todos los números hasta un número pasado como parámetro:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

El método calculateSum() se llama a sí mismo con valores reducidos. También tenemos un punto de salida de esta recursión cuando la variable num se convierte en cero. Este método calcula la suma de todos los números desde 1 hasta el parámetro, en nuestro caso 5. Observemos el diagrama de flujo que muestra cómo funciona la recursión utilizando este método como ejemplo:

El ejemplo anterior demuestra cómo el método se llama a sí mismo con valores reducidos, y cuando alcanza cero, regresa sumando los valores. También podemos observar cómo se ejecuta el cuerpo del bloque if, donde sumamos num al resultado de la llamada al método con un valor reducido. Los valores intermedios después de cada llamada al método se indican cerca de las flechas.

¿Podemos evitar el uso de la recursión?

La recursión también puede ser reemplazada por un bucle regular. Veamos un ejemplo donde primero utilizamos un método recursivo y luego usamos un bucle for para realizar la misma operación:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Aquí podemos observar cómo reemplazamos nuestro método recursivo por un bucle for convencional, utilizando la variable i para incrementar nuestro result por i en cada iteración hasta alcanzar el número especificado num, que es el parámetro del método.

Conclusión

En conclusión, los métodos recursivos pueden ser útiles pero también riesgosos. La recursividad a menudo puede ser reemplazada por bucles, y aunque puede simplificar ciertas tareas, también puede causar problemas si no se utiliza con cuidado. Si se decide utilizar recursividad, incluso con experiencia, es importante proceder con precaución.

1. ¿Qué es la recursividad en Java?

2. ¿Cuál es mejor utilizar, recursión o un bucle regular?

question mark

¿Qué es la recursividad en Java?

Select the correct answer

question mark

¿Cuál es mejor utilizar, recursión o un bucle regular?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

Java Avanzado

Java Avanzado

1. Estructura Profunda de Java
2. Métodos
3. String Avanzado
4. Clases
5. Clases Avanzadas

book
Recursión

¿Cómo romper fácilmente tu código?

¿Por qué esto puede romper el código? Porque puede llevar a una recursión infinita, lo que consumirá memoria sin fin y reducirá el rendimiento del dispositivo. Entonces, ¿por qué necesitamos la recursión? En algunos casos, la recursión puede ser útil, pero debe usarse con precaución. Por ejemplo, la recursión puede reemplazar un bucle while. Veamos un ejemplo de uso de la recursión para calcular la suma de todos los números hasta un número pasado como parámetro:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

El método calculateSum() se llama a sí mismo con valores reducidos. También tenemos un punto de salida de esta recursión cuando la variable num se convierte en cero. Este método calcula la suma de todos los números desde 1 hasta el parámetro, en nuestro caso 5. Observemos el diagrama de flujo que muestra cómo funciona la recursión utilizando este método como ejemplo:

El ejemplo anterior demuestra cómo el método se llama a sí mismo con valores reducidos, y cuando alcanza cero, regresa sumando los valores. También podemos observar cómo se ejecuta el cuerpo del bloque if, donde sumamos num al resultado de la llamada al método con un valor reducido. Los valores intermedios después de cada llamada al método se indican cerca de las flechas.

¿Podemos evitar el uso de la recursión?

La recursión también puede ser reemplazada por un bucle regular. Veamos un ejemplo donde primero utilizamos un método recursivo y luego usamos un bucle for para realizar la misma operación:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Aquí podemos observar cómo reemplazamos nuestro método recursivo por un bucle for convencional, utilizando la variable i para incrementar nuestro result por i en cada iteración hasta alcanzar el número especificado num, que es el parámetro del método.

Conclusión

En conclusión, los métodos recursivos pueden ser útiles pero también riesgosos. La recursividad a menudo puede ser reemplazada por bucles, y aunque puede simplificar ciertas tareas, también puede causar problemas si no se utiliza con cuidado. Si se decide utilizar recursividad, incluso con experiencia, es importante proceder con precaución.

1. ¿Qué es la recursividad en Java?

2. ¿Cuál es mejor utilizar, recursión o un bucle regular?

question mark

¿Qué es la recursividad en Java?

Select the correct answer

question mark

¿Cuál es mejor utilizar, recursión o un bucle regular?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7
some-alt