DUT Info Structures de données et algorithmes fondamentaux 2020–2021
TD 5 - Récursivité sur des itérables
Pour les exercices suivants, il est permis et même recommandé d’utiliser une fonction auxi- liaire. Vous ne pouvez par contre pas utiliser les slices. Comme pour le TD précédent, il est fortement conseillé de d’abord formuler le problème à résoudre de manière récursive.
Exercice 1. SoitL une liste de nombres. Écrivez :
1. une fonction récursive renvoyant la somme des nombres de L (sans utiliser la fonction sum) ;
2. une fonction récursive renvoyant le produit des nombres de L. Si la liste est vide, renvoyez 0 dans les deux cas.
Exercice 2. SoitL une liste de nombres. Écrivez :
1. une fonction récursive renvoyant le minimum de L(sans utiliser la fonctionmin) ; 2. une fonction récursive renvoyant le maximum de L (sans utiliser la fonctionmax) ; 3. une fonction récursive renvoyant la position d’un élément donné dans L (sans utiliser la
méthodeindex) ouNonesi l’élément ne s’y trouve pas.
4. une fonction récursive renvoyant le nombre d’occurrences d’un élément donné dans L (sans utiliser la méthodecount).
Pour les deux premières fonctions, si la liste passée en paramètre est vide, il faut afficher une erreur et renvoyerNone.
Exercice 3. Pour rappel, un palindrome est un mot qui se lit indifféremment de gauche à droite ou de droite à gauche (par exemple : “kayak” ou “radar”). Écrivez une fonction récursive renvoyantTruesi la chaîne passée en paramètre est un palindrome, et Falsesinon (on suppose que tous les caractères sont des minuscules non accentuées).
Exercice 4. Écrivez une fonction récursive renvoyantTruesi une liste donnée est croissante, et False sinon. On renverra aussi Truesi la liste est vide ou si tous ses éléments sont les mêmes.
Exercice 5. Écrivez deux fonctions récursives qui renvoient une liste contenant les nombres de 1 à n. La première fonction renvoie les nombres dans l’ordre croissant, tandis que la deuxième les renvoie dans l’ordre décroissant (sans se servir de fonctions commereversed).
Exercice 6. Écrivez une fonction récursive renvoyant True si une liste donnée contient des doublons, etFalse sinon.
Page 1 / 1