English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java Tableau

Java Programmation Orientée Objet (I)

Java Programmation Orientée Objet (II)

Java Programmation Orientée Objet (III)

Gestion des exceptions Java

Java Liste (List)

Java Queue (File d'attente)

Java Map Collection

Java Set Collection

Java Entrée Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Recursion Java

Dans ce tutoriel, vous découvrirez les fonctions récursives Java et leurs avantages et inconvénients.

En Java, appeler soi-mêmeMéthodeIl s'agit de la méthode récursive. Et ce processus est appelé récursion.

Un exemple physique est de placer deux miroirs parallèles face à face. Tout objet entre eux sera réfléchi récursivement.

Comment fonctionne la récursion ?

Schéma de workflow de la récursion Java

Dans l'exemple ci-dessus, nous avons appelé la méthode recurse() à partir de l'intérieur de la méthode main. (Appel de méthode normal). Et à l'intérieur de la méthode recurse(), nous appelons à nouveau la même méthode recurse. C'est un appel récursif.

Pour arrêter les appels récursifs, nous devons fournir certaines conditions à l'intérieur de la méthode. Sinon, cette méthode sera appelée de manière infinie.

Par conséquent, nous utilisonsInstruction if ... elseou une méthode similaire) arrêter les appels récursifs à l'intérieur de la méthode.

Exemple : utilisation de la factorielle récursive

class Factorial {
    static int factorial(int n) {
        if (n != 0)  // condition de terminaison
            return n * factorial(n-1); //appels récursifs
        else
            return 1;
    }
    public static void main(String[] args) {
        int number = 4, result;
        result = factorial(number);
        System.out.println(number + "de la factorielle = " + result);
    }
}

Sortie:

4 de la factorielle = 24

In the above example, we have a method named factorial(). It is called from the main() method. The number variable passed as an argument.

Here, note the following statement:

return n * factorial(n-1);

factorial() method is calling itself. Initially, the value of n inside factorial() is4. During the next recursive call, the3to the factorial() method. This process continues until n equals 0.

When n equals 0, the if statement returns false, so return1. Finally, the accumulated result is passed to the main() method.

Workflow of the factorial program

The following figure will help you better understand how to use recursion to execute the factorial program.

Factorial program using recursion

Advantages and disadvantages of recursion

When making a recursive call, a new variable storage location is allocated on the stack. With each return from a recursive call, the old variables and parameters are removed from the stack. Therefore, recursion usually uses more memory and is usually slower.

On the other hand, the recursive solution is much simpler and takes less time to write, debug, and maintain.