Adloun

Dichotomie récursive

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

Énoncé

Écrire dicho_rec x t g d (version récursive) et donner son variant.

Corrigé

let rec dicho_rec x t g d =
  if g > d then None
  else
    let m = (g + d) / 2 in
    if t.(m) = x then Some m
    else if t.(m) < x then dicho_rec x t (m + 1) d
    else dicho_rec x t g (m - 1)

Variant : d - g (la largeur de l'intervalle), qui décroît strictement à chaque appel car m est strictement entre g et d (sauf intervalle minuscule, où l'on tranche). Le cas de base g &gt; d (intervalle vide) renvoie None.

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.