Récursion et boucles

JavaBeginner
Pratiquer maintenant

Introduction

Les ordinateurs sont souvent utilisés pour automatiser les tâches répétitives. Répéter des tâches sans commettre d'erreurs est quelque chose que les ordinateurs font bien et les humains mal. Comme les expressions conditionnelles, les boucles peuvent également être imbriquées les unes dans les autres, mais cela rendra notre programme difficile à lire et les performances ne seront pas bonnes. Essayez d'éviter les boucles imbriquées. Il existe trois types de boucles en Java. Nous allons les apprendre l'un après l'autre dans ce laboratoire.

Contenu

En informatique, la récursion est une technique selon laquelle la solution à un problème dépend des solutions à des instances plus petites du même problème (contrairement à l'itération). Cette approche est appelée récursion et peut s'appliquer à de nombreux types de problèmes. La récursion est l'une des idées centrales de l'informatique. Le pouvoir de la récursion réside évidemment dans la possibilité de définir un ensemble infini d'objets au moyen d'un nombre fini d'énoncés. De la même manière, un nombre infini de calculs peut être décrit par un programme récursif fini, même si ce programme ne contient pas de répétitions explicites.

Exemple :

Écrivez le code suivant dans le fichier /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);
    }
}

Sortie :

Exécutez le fichier recursionTest.java à l'aide des commandes suivantes :

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

Voyez la sortie :

55

Boucle while

Lorsqu'on entre dans une boucle while, d'abord la condition est vérifiée. La boucle while tournera toujours jusqu'à ce que la condition soit fausse. La syntaxe est la suivante :

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/whileTest.java :

public class whileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        // sortir lorsque x est supérieur à 3, le code interne tournera 3 fois au total.
        while (x <= 3)
        {
            System.out.println("x = " + x);
            // incrémenter la valeur de x de 1 à chaque itération pour la prochaine itération
            x++;
        }
    }
}

Sortie :

Exécutez le fichier whileTest.java à l'aide des commandes suivantes :

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

Voyez la sortie :

x = 1
x = 2
x = 3

Boucle do-while

Cette boucle est très similaire à la boucle while, mais il y a une différence. Peu importe la valeur de la condition, la boucle tournera toujours au moins une fois ; ensuite, la condition est vérifiée. Donc, parfois peut-être qu'elle ne convient pas à certaines circonstances. La syntaxe est :

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/doWhileTest.java :

public class doWhileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        do
        {
            // le code ci-dessous sera exécuté en premier, puis la condition est vérifiée.
            System.out.println("x = " + x);
            x++;
        }
        while (x <= 3);
    }
}

Sortie :

Exécutez le fichier doWhileTest.java à l'aide des commandes suivantes :

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

Voyez la sortie :

x = 1
x = 2
x = 3

Boucle for

La boucle for ressemble à ceci :

Exemple :

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

La condition d'initialisation qui marque le début d'une boucle for ne s'exécutera qu'une seule fois. La expression conditionnelle sera vérifiée à chaque fois avant d'entrer dans la boucle. Elle est utilisée pour tester la condition de sortie d'une boucle et doit renvoyer une valeur booléenne. Une fois la condition vraie, les instructions dans la boucle sont exécutées ; ensuite, l'expression d'incrémentation sera exécutée pour modifier les valeurs du compteur ou d'autres variables pour la prochaine itération.

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/forTest.java :

public class forTest
{
    public static void main(String[] args)
    {
        // la boucle for commence lorsque x = 1 jusqu'à x <= 3
        for (int x = 1; x <= 3; x++) {
            System.out.println("x = " + x);
        }
    }
}

Sortie :

Exécutez le fichier forTest.java à l'aide des commandes suivantes :

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

Voyez la sortie :

x = 1
x = 2
x = 3

Vous pouvez sortir de la boucle à tout moment dans le corps de la boucle en utilisant des instructions telles que continue ou break dans un bloc if d'instructions. break sortira de la boucle entière tandis que continue ne quittera que l'itération actuelle et passera à l'itération suivante (si la condition est vraie).

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/loopTest.java :

public class loopTest
{
    public static void main(String[] args)
    {
        // la boucle for commence lorsque x = 1 jusqu'à x <= 3
        for (int x = 1; x <= 3; x++) {
            if(x==2){
                // sortir de la boucle entière
                break;
                // continue ne quittera que l'itération actuelle et effectuera l'itération suivante
                // vous pouvez supprimer l'expression break et utiliser continue. Voir la sortie.
                // continue;
            }
            System.out.println("x = " + x);
        }
    }
}

Sortie :

Exécutez le fichier loopTest.java à l'aide des commandes suivantes :

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

Voyez la sortie :

x = 1

Résumé

Dans ce laboratoire, nous avons appris trois types de boucles. La boucle for et la boucle while sont faciles à apprendre tandis que la boucle do-while n'est pas très parfaite logiquement. Vous devriez la choisir avec grand soin.