Récursivité avec les chaînes et les listes

12.3 Récursivité avec les chaînes et les listes

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • Démontrer l'utilisation de la récursivité pour résoudre un problème sur les chaînes de caractères.
  • Démontrer l'utilisation de la récursivité pour résoudre un problème sur les listes.
  • Utiliser la fonction de liste intégrée count().

Récursivité avec les chaînes de caractères

Un mot qui s'écrit de la même façon à l'endroit et à l'envers est appelé un palindrome. Ex. : racecar.

La récursivité peut être utilisée pour déterminer si un mot donné est un palindrome.

Faites le point

Identifier un palindrome

Concepts en pratique

Récursivité avec les chaînes

Reportez-vous à l'animation ci-dessus.

1.
Parmi les propositions suivantes, laquelle est reconnue comme un palindrome par palindrome() ?
  1. madamm
  2. madaM
  3. madame
2.
Que se passerait-il si la condition à la ligne 4 de palindrome() était remplacée par if len(word) == 1: ?
  1. Seuls les palindromes ayant un nombre impair de lettres seraient correctement reconnus.
  2. Rien. La fonction fonctionnerait de la même manière.
  3. La fonction ne reconnaîtrait aucun palindrome.
3.
Que se passerait-il si la condition à la ligne 8 de palindrome() était remplacée par if palindrome(word.strip(word[0])) ?
  1. Rien. La fonction fonctionnerait de la même manière : la première et la dernière lettre seraient supprimées.
  2. Certains mots, comme "madamm", seraient reconnus à tort comme des palindromes.

Récursivité avec les listes

L'animation ci-dessous montre une méthode récursive pour vérifier si deux listes contiennent les mêmes éléments mais dans un ordre différent.

La fonction count() renvoie le nombre d'éléments d'une liste qui correspondent à l'élément donné, et renvoie 0 sinon. Ex. : Pour list_num = [1, 3, 3, 4], list_num.count(3) renvoie 2.

Faites le point

Vérifier les permutations de listes

Concepts en pratique

Permutations de listes

Reportez-vous à l'animation ci-dessus. Que renverrait permu_check() pour chaque paire de listes ci-dessous ?

4.
list_num = [1, 7, 99, 2]
other_list = [99, 7, 1, 2]
  1. True
  2. False
5.
list_num = [22, 9, 15, 17, 15]
other_list = [17, 9, 22, 22, 15]
  1. True
  2. False
6.
honors_list = ["Bo", "Joe", "Sandy"]
first_names_of_team_1 = ["Sandy", "Bo", "Joe"]
  1. True
  2. False
7.
this_list = [1, 2, [3], [4], 5]
that_list = [[3], 1, 5, [4], 2]
  1. True
  2. False
8.
list_1 = [1, 2, 3]
list_2 = [1, 2, 3]
  1. True
  2. False

À vous d'essayer

Supprimer les doublons

Écrivez une fonction récursive rem_dup() qui supprime les doublons d'une liste.

Ex. : La liste [5, 5, 2, 1, 3, 1, 6] devrait donner la liste de sortie [5, 2, 1, 3, 6].