Information

Author(s) Vincent Branders, Pierre Dupont
Deadline 03/04/2024 14:00:00
Submission limit No limitation

Sign in

[TP07] Taille d'une liste - Récursif

Vous avez appris précédemment comment utiliser la récursion sur des entiers et des tableaux.

Dans cette séance-ci, nous travaillerons la récursion sur les listes. Ce type de données abstrait présente un exemple de récursion structurelle : la liste est définie soit comme la liste vide, soit comme un élément suivi d'une liste.

Une telle implémentation vous est fournie par la classe List.py.

La figure suivante représente graphiquement un objet de type List qui contient les entiers de 1 à 5.

\begin{equation*} \boxed{1}\rightarrow\boxed{\boxed{2}\rightarrow\boxed{\boxed{3}\rightarrow\boxed{\boxed{4}\rightarrow\boxed{\boxed{5}\rightarrow\!\bullet}}}} \end{equation*}

On vous demande d'implémenter un algorithme avec récursion. Avant d'élaborer votre algorithme, détaillez :

  1. le cas de base,
  2. comment traiter le cas de base,
  3. comment construire la solution actuelle (taille n) si je connais une solution pour un problème plus petit (par exemple de taille n-1).

Question 1: Cas de base

Identifiez, parmi les propositions suivantes, celle qui correspond à un cas de base de l'algorithme récursif.

Question 2: Longueur d'une liste (récursif)

Vous êtes chargés d'implémenter la fonction suivante en Python. Pour préparer votre code, vous pouvez télécharger le fichier list_size.py qui contient la signature de la fonction et quelques exemples de tests. Vous pouvez également télécharger le fichier List.py qui contient une implémentation de liste.

Note: Lorsqu'il vous est demandé d'implémenter une fonction, vous êtes invités à ne remplir que le corps de la fonction à implémenter.

def length_rec(l):
    """
    Calcule la taille d une liste par récursion
    pre: -
    post: retourne la taille de la liste `l`
    """