Adloun

Sous-ensemble de somme donnée

Exercice · OCaml (option informatique), chapitre 11 — Récursivité et retour sur trace

Énoncé

Écrire existe_somme l cible (entiers positifs) et l'appliquer à existe_somme [2; 3; 7] 5.

Corrigé

let rec existe_somme l cible =
  if cible = 0 then true
  else
    match l with
    | [] -> false
    | x :: reste ->
        existe_somme reste (cible - x) || existe_somme reste cible

existe_somme [2;3;7] 5 : prendre 2 puis chercher 3 dans [3;7] → prendre 3, cible 0 → true. Le sous-ensemble convient.

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.