Adloun

Racine carrée entière par dichotomie

Exercice · OCaml (option informatique), chapitre 10 — Recherche et dichotomie

Énoncé

Écrire racine n (), le plus grand tel que , en par dichotomie (à comparer au du chapitre 4).

Corrigé

let racine n =
  let g = ref 0 and d = ref n in
  while !g < !d do
    let m = (!g + !d + 1) / 2 in   (* milieu « par excès » *)
    if m * m <= n then g := m
    else d := m - 1
  done;
  !g

On cherche le plus grand m avec m<em>m &lt;= n. Invariant : !g </em> !g &lt;= n (g est réalisable) et la réponse est dans [g, d]. Le milieu par excès (+1) est nécessaire : avec g := m et un milieu par défaut, on bouclerait sans fin quand d = g + 1. Variant : d - g. Coût . racine 10 .

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.