in

Recursión de Java


Recursión de Java

La recursividad es la técnica de hacer que una función se llame a sí misma. Esta técnica proporciona una forma de descomponer problemas complicados en problemas simples que son más fáciles de resolver.

La recursividad puede ser un poco difícil de entender. La mejor forma de averiguar cómo funciona es experimentar con él.


Ejemplo de recursividad

Sumar dos números es fácil de hacer, pero sumar un rango de números es más complicado. En el siguiente ejemplo, la recursividad se utiliza para sumar un rango de números dividiéndolo en la simple tarea de sumar dos números:

Ejemplo

Utilice la recursividad para sumar todos los números hasta el 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static int sum(int k) {
    if (k > 0) {
      return k + sum(k - 1);
    } else {
      return 0;
    }
  }
}

Inténtalo tú mismo »

Ejemplo explicado

Cuando el sum() se llama a la función, agrega parámetro k a la suma de todos los números menores que k y devuelve el resultado. Cuando k se convierte en 0, la función simplemente devuelve 0. Cuando se ejecuta, el programa sigue estos pasos:

10 + suma (9)
10 + (9 + suma (8))
10 + (9 + (8 + suma (7)))

10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + suma (0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Dado que la función no se llama a sí misma cuando k es 0, el programa se detiene allí y devuelve el resultado.


Condición de detención

Así como los bucles pueden encontrarse con el problema de los bucles infinitos, las funciones recursivas pueden encontrarse con el problema de la recursividad infinita. La recursividad infinita es cuando la función nunca deja de llamarse a sí misma. Cada función recursiva debe tener una condición de detención, que es la condición en la que la función deja de llamarse a sí misma. En el ejemplo anterior, la condición de detención es cuando el parámetro k se convierte en 0.

Es útil ver una variedad de ejemplos diferentes para comprender mejor el concepto. En este ejemplo, la función agrega un rango de números entre un comienzo y un final. La condición de detención para esta función recursiva es cuando fin no es mayor que comienzo:

Ejemplo

Utilice la recursividad para sumar todos los números entre 5 y 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}

Inténtalo tú mismo »

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Pruebas de aplicaciones reales | Oráculo

Estático en C – javatpoint