Recursión y Bucles

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Las computadoras a menudo se utilizan para automatizar tareas repetitivas. Repetir tareas sin cometer errores es algo que las computadoras hacen bien y las personas hacen mal. Al igual que las expresiones condicionales, los bucles también pueden anidarse uno dentro del otro, pero esto hará que nuestro programa sea difícil de leer y el rendimiento no será bueno. Intenta evitar los bucles anidados. Hay tres tipos de bucles en Java. Los aprenderemos uno por uno en este laboratorio.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/while_loop("While Loop") java/BasicSyntaxGroup -.-> java/break_continue("Break/Continue") java/BasicSyntaxGroup -.-> java/output("Output") java/ProgrammingTechniquesGroup -.-> java/recursion("Recursion") subgraph Lab Skills java/variables -.-> lab-178552{{"Recursión y Bucles"}} java/if_else -.-> lab-178552{{"Recursión y Bucles"}} java/for_loop -.-> lab-178552{{"Recursión y Bucles"}} java/while_loop -.-> lab-178552{{"Recursión y Bucles"}} java/break_continue -.-> lab-178552{{"Recursión y Bucles"}} java/output -.-> lab-178552{{"Recursión y Bucles"}} java/recursion -.-> lab-178552{{"Recursión y Bucles"}} end

Contenido

La recursión en informática es una técnica en la que la solución a un problema depende de las soluciones a instancias más pequeñas del mismo problema (en oposición a la iteración). Este enfoque se llama recursión y se puede aplicar a muchos tipos de problemas. La recursión es una de las ideas centrales de la informática. El poder de la recursión evidentemente radica en la posibilidad de definir un conjunto infinito de objetos mediante un número finito de declaraciones. Del mismo modo, un número infinito de cálculos puede describirse mediante un programa recursivo finito, incluso si este programa no contiene repeticiones explícitas.

Ejemplo:

Escribe el siguiente código en el archivo /home/labex/project/recursionTest.java:

public class recursionTest{
    public static int fibonacci(int n){
        if(n<=2){
            return 1;
        }else{
            return fibonacci(n-1)+fibonacci(n-2);
        }
    }
    public static void main(String[] args){
        int res = recursionTest.fibonacci(10);
        System.out.println(res);
    }
}

Salida:

Ejecuta el archivo recursionTest.java utilizando los siguientes comandos:

javac /home/labex/project/recursionTest.java
java recursionTest

Ver la salida:

55

Bucle While

Al entrar en un bucle while, primero se comprobará la condición. El bucle while siempre se ejecutará hasta que la condición sea falsa. La sintaxis es la siguiente:

Ejemplo:

Escribe el siguiente código en el archivo /home/labex/project/whileTest.java:

public class whileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        // salir cuando x sea mayor que 3, el código interno se ejecutará 3 veces en total.
        while (x <= 3)
        {
            System.out.println("x = " + x);
            // incrementar el valor de x en 1 cada vez para la siguiente iteración
            x++;
        }
    }
}

Salida:

Ejecuta el archivo whileTest.java utilizando los siguientes comandos:

javac /home/labex/project/whileTest.java
java whileTest

Ver la salida:

x = 1
x = 2
x = 3

Bucle Do-While

Este bucle es muy similar al bucle while, pero hay una diferencia. Independientemente del valor de la condición, el bucle siempre se ejecutará al menos una vez; luego se comprueba la condición. Entonces, a veces quizás no sea adecuado para algunas circunstancias. La sintaxis es:

Ejemplo:

Escribe el siguiente código en el archivo /home/labex/project/doWhileTest.java:

public class doWhileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        do
        {
            // el código siguiente se ejecutará primero, luego se comprobará la condición.
            System.out.println("x = " + x);
            x++;
        }
        while (x <= 3);
    }
}

Salida:

Ejecuta el archivo doWhileTest.java utilizando los siguientes comandos:

javac /home/labex/project/doWhileTest.java
java doWhileTest

Ver la salida:

x = 1
x = 2
x = 3

Bucle For

El bucle for tiene la siguiente forma:

Ejemplo:

for (init expression; condition expression; increment expression)
{
    // statements here
}

La condición de inicialización que marca el inicio de un bucle for se ejecutará solo una vez. La expresión condicional se comprobará cada vez antes de entrar en el bucle. Se utiliza para probar la condición de salida de un bucle y debe devolver un valor booleano. Una vez que la condición es verdadera, se ejecutan las instrucciones en el bucle; luego se ejecutará la expresión de incremento para modificar los valores del contador u otras variables para la siguiente iteración.

Ejemplo:

Escribe el siguiente código en el archivo /home/labex/project/forTest.java:

public class forTest
{
    public static void main(String[] args)
    {
        // el bucle for comienza cuando x = 1 hasta x <= 3
        for (int x = 1; x <= 3; x++) {
            System.out.println("x = " + x);
        }
    }
}

Salida:

Ejecuta el archivo forTest.java utilizando los siguientes comandos:

javac /home/labex/project/forTest.java
java forTest

Ver la salida:

x = 1
x = 2
x = 3

Puedes salir del bucle en cualquier momento en el cuerpo del bucle utilizando código como continue o break en un bloque if de instrucciones. break saldrá del bucle completo mientras que continue solo abandonará la iteración actual y realizará la siguiente iteración (si la condición es verdadera).

Ejemplo:

Escribe el siguiente código en el archivo /home/labex/project/loopTest.java:

public class loopTest
{
    public static void main(String[] args)
    {
        // el bucle for comienza cuando x = 1 hasta x <= 3
        for (int x = 1; x <= 3; x++) {
            if(x==2){
                // salir del bucle completo
                break;
                // continue solo abandonará la iteración actual y hará la siguiente iteración
                // puedes eliminar la expresión break y usar continue. Ver la salida.
                // continue;
            }
            System.out.println("x = " + x);
        }
    }
}

Salida:

Ejecuta el archivo loopTest.java utilizando los siguientes comandos:

javac /home/labex/project/loopTest.java
java loopTest

Ver la salida:

x = 1

Resumen

En este laboratorio, aprendimos tres tipos de bucles. El bucle for y el bucle while son fáciles de aprender, mientras que el bucle do-while no es muy perfecto lógicamente. Debes elegirlo con mucho cuidado.