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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
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.