Exercices récursivité
Analyse d’une fonction récursive
Soit le programme Python suivant :
def f(a, b) : """ a et b sont deux entiers naturels non nuls """ if b == 1 : return a return a + f(a, b-1) print(f(3, 5))
f(a, b)
(a
et b
étant des entiers naturels non nuls) ?
Occurrences
nb_occurrences(s, c)
qui renvoie le nombre d’occurrences du caractère c
dans la chaîne s
.
Parcours d’une arborescence de fichiers
- La fonction
os.listdir(path)
(du moduleos
) permet d’obtenir la liste de tous les fichiers et dossier placés directement dans le dossier désigné par le cheminpath
. - La fonction
os.path.isfile(path)
(du moduleos.path
) renvoieTrue
si le cheminpath
désigne un fichier (et doncFalse
s’il s’agit d’un dossier) - La fonction
os.path.splitext(path)
permet de séparer l’extension du reste du cheminpath
, sous la forme d’une liste[racine, extension]
. - La fonction
os.path.join(path1, path2, ...)
permet de concaténer des éléments de chemin sans trop se soucier de la syntaxe, qui rappelons-le, varie d’un OS à l’autre !
liste_fichiers(path, ext)
qui renvoie la liste de tous les fichiers ayant l’extension ext
situés dans d’un dossier désigné par le chemin path
, ainsi que dans tous ses sous-dossiers.
Triangle de Pascal
Le triangle de Pascal (Blaise Pascal !) est une présentation des coefficients binomiaux sous la forme d’un triangle :
On le définit par récurrence :
\(C(n, p) = \begin{cases}1, & \text{si $n=p$ ou $p=0$} \\
C(n-1, p-1)+C(n-1, p), & \text{sinon}
\end{cases}\)
avec \(0\lt p \leq n\)
Dans le triangle de Pascal, \(n\) correspond à l’indice des lignes et \(p\) à celui des colonnes.
C(n, p)
qui renvoie la valeur de \(C(n, p)\).
Conversion Décimal ->Binaire
binaire(n)
qui renvoie la représentation binaire naturel d’un nombre n
(sous forme de chaîne de caractères : "0"
ou "1"
).
Permutations
permutation()
, sous forme récursive, permettant d’obtenir l’ensemble des permutations possibles d’un n-uplet \((e_0, e_1, \ldots, e_n)\)Exemple : permutation([1,2,3])
doit retourner [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
Sources :