diff --git a/recursivite/exercice_MJoannic/sqrt/correction/main.py b/recursivite/exercice_MJoannic/sqrt/correction/main.py new file mode 100644 index 0000000..6f454e0 --- /dev/null +++ b/recursivite/exercice_MJoannic/sqrt/correction/main.py @@ -0,0 +1,41 @@ +def racine(n): + def aux(gauche, droite): + + + if gauche > droite: + return droite + + milieu = (gauche + droite) // 2 + + if milieu * milieu == n: + return milieu + + elif milieu * milieu > n: + return aux(gauche, milieu - 1) + + else: + return aux(milieu + 1, droite) + return aux(0, n) + + + +def racine_decimale(n, precision=1e-6): + + def aux(gauche, droite): + milieu = (gauche + droite) / 2 + + if droite - gauche < precision: + return milieu + + if milieu * milieu == n: + return milieu + + elif milieu * milieu < n: + return aux(milieu, droite) + + else: + return aux(gauche, milieu) + + partie_entiere = racine(n) + + return aux(partie_entiere, partie_entiere + 1)