diff --git a/slides/cours_7.md b/slides/cours_7.md index 0f00fe88c357359e94c228e154ffd22ce1d3b92a..9f3a940a9e3dcc930b16714300b83a98d4cd254c 100644 --- a/slides/cours_7.md +++ b/slides/cours_7.md @@ -259,7 +259,27 @@ $$ $$ * En moyenne, $\mathcal{O}(N^2)$ ($N^2/2$ comparaisons). -# L'algorithme du PPCM *récursif* (1/2) +# L'algorithme du PPCM *récursif* (1/3) + +## Exemple d'algorithme pour le calcul + +```C +PPCM(36, 90): +36 < 90 // 36 + 36 +72 < 90 // 72 + 36 +108 > 90 // 90 + 90 +108 < 180 // 108 + 36 +144 < 180 // 144 + 36 +180 = 180 // The End! +``` + +. . . + +* On incrémente de 36 à gauche et de 90 à droite jusqu'à ce que les deux + soient égaux. + + +# L'algorithme du PPCM *récursif* (2/3) ## Rappel de l'algorithme @@ -283,17 +303,15 @@ int ppcm(int m, int n) { ## Écrire l'algorithme *récursif* du PPCM (matrix) -# L'algorithme du PPCM *récursif* (1/2) +# L'algorithme du PPCM *récursif* (3/3) -```C -int ppcm(int mult_n, int mult_m, int n, int m) { - if (mult_n < mult_m) { - return ppcm(n + mult_n, mult_m, n, m); - } else if (mult_n > mult_m) { - return ppcm(mult_n, m + mult_m, n, m); - } else { - return mult_n; - } -} -``` +## Pseudo-code + +- Algorithme du PPCM de deux nombres `n` et `m` + - `ppcm(mult_n,mult_m) = ppcm(mult_n + n, mult_m)` + si `mult_n < mult_m` (récursivité) + - `ppcm(mult_n,mult_m) = ppcm(mult_n, mult_m + m)` + si `mult_n > mult_m` (récursivité) + - `ppcm(mult_n,mult_m) = mult_n` + si `mult_n = mult_m` (condition d’arrêt)