Adloun

programmation Java (école d'ingénieur) · Chapitre 4 · Application directe du cours

PGCD récursif

Méthodes · niveau 2

Énoncé

L'algorithme d'Euclide repose sur deux propriétés : , et, pour , .

  • Écrire la méthode récursive static int pgcd(int a, int b), avec son commentaire de documentation (précondition, postcondition).
  • Donner la suite des appels effectués par pgcd(84, 36) et le résultat.
  • Pourquoi la récursivité se termine-t-elle toujours ?

Corrigé


/**
 * Retourne le plus grand diviseur commun de a et b.
 * Précondition : a >= 0, b >= 0, a et b non tous deux nuls.
 * Postcondition : le résultat divise a et b, et tout diviseur commun le divise.
 */
static int pgcd(int a, int b) {
    if (b == 0) return a;                    // cas de base
    return pgcd(b, a % b);                   // a % b < b : le second argument diminue
}

En ajoutant un affichage en tête de la méthode, on obtient la suite des appels :


  pgcd(84, 36)
  pgcd(36, 12)
  pgcd(12, 0)
pgcd(84, 36) = 12

Terminaison : à chaque appel, le second argument est remplacé par a % b, qui est un entier positif ou nul strictement inférieur à . Une suite d'entiers positifs strictement décroissante est finie : on atteint forcément , le cas de base.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →