Adloun

NSI (terminale) · Chapitre 5 · Application directe du cours

Problème — Parties d'un ensemble

La récursivité · niveau 3 (difficile)

Énoncé

Problème — Parties d'un ensemble.

Écrire une fonction récursive parties(liste) qui renvoie la liste de tous les sous-ensembles (parties) d'une liste d'éléments distincts.

Corrigé

On raisonne sur le premier élément x. Les parties de la liste se répartissent en deux moitiés : celles qui ne contiennent pas x (ce sont les parties du reste) et celles qui le contiennent (les mêmes, augmentées de x). Le cas de base est la liste vide, dont l'unique partie est l'ensemble vide.


def parties(liste):
    if liste == []:
        return [[]]
    x = liste[0]
    sous_parties = parties(liste[1:])
    avec_x = [[x] + p for p in sous_parties]
    return sous_parties + avec_x

print(parties([1, 2, 3]))
# affiche [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]]

Pour un ensemble de éléments, il existe parties : le coût est nécessairement exponentiel, ce qui est inhérent au problème lui-même.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →