Récursivité pour créer des sous listes triées

Fermé
Thibaudm - Modifié le 12 janv. 2022 à 14:01
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 12 janv. 2022 à 14:02
Bonjour à tous,

Je rencontre un problème dans le codage d'une fonction récursive en python.

L'objectif est le suivant:

"Écrire une fonction récursive
sous_liste(n: int, k: int) -> list[list[int]]
qui prend en entrée deux entiers (n, k) ∈ N, et renvoie une liste contenant toutes les sous-listes triées de [0, 1, ..., n-1] de taille k. Par exemple avec n = 4, on obtient (l’ordre des sous-listes n’a pas d’importance) :

Pour k = 0 :
[[]]
,
Pour k = 1 :
[[0], [1], [2], [3]]
,
Pour k = 2 :
[[0,1], [0,2], [0,3], [1,2], [1,3], [2,3]]
,
Pour k = 3 :
 [[0,1,2], [0,1,3], [0,2,3], [1,2,3]]
,
Pour k = 4 :
[[0,1,2,3]]
,
Pour k = 5 :
[]
."


Je traite donc trois cas:
  • si k > n je renvoie la liste vide
  • si k = 0 la seule liste qui convient est la liste vide que je renvoie dans une liste
  • si 0 < k <= n j'essaie de créer à l'aide d'un appel récursif toutes les sous listes

triées que j'ajoute à une liste finale (j'ai le droit d'utiliser une boucle
for ici).
Seulement, je n'arrive pas à passer d'une sous liste à une autre avec
un appel récursif. Est-ce possible ?

Merci d'avance et bonne journée

Configuration: Windows / Chrome 97.0.4692.71
A voir également:

1 réponse

mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756
12 janv. 2022 à 14:02
Bonjour,

As-tu regardé
itertools.combinations
?

Bonne chance
0