Compter les sous-ensembles de somme donnée
Exercice · OCaml (option informatique), chapitre 11 — Récursivité et retour sur trace
Énoncé
Modifier existe_somme en compte_somme l cible qui compte le nombre de sous-ensembles de somme cible.
Corrigé
let rec compte_somme l cible =
if cible = 0 then 1
else if cible < 0 then 0
else
match l with
| [] -> 0
| x :: reste ->
compte_somme reste (cible - x) + compte_somme reste cible
On remplace le « trouvé / pas trouvé » (||) par une addition des deux sous-comptes : avec x, sans x. Le cas cible = 0 compte (l'ensemble construit convient) ; cible < 0 compte (on a dépassé).
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.