C2 : Exercices
Exercices d'entrainement
C4.E1 : Nombre de caractères dans une chaine
Écrire une fonction récursive qui prend une chaine de caractères en paramètre et renvoie la longueur de cette chaine sans utiliser la fonction native len.
C4.E2 : Fonctions mystérieuses
On considère le code ci-dessous.
def f1(n):
if n == 1:
return False
return f2(n-1)
def f2(n):
if n == 1:
return True
return f1(n-1)
1) Indiquer les valeurs renvoyées par f1(1), f1(2), f1(3), f1(4) et f1(5).
2) Expliquer le rôle des fonctions f1 et f2 et écrire leurs docstrings.
C4.E3 : Valeur maximale d'une liste
Écrire une fonction récursive qui prend une liste de nombres en paramètre et renvoie la valeur maximale de cette liste.
Petits problèmes
C4.Pb1 : Suite de fibonacci
La suite de Fibonacci est une suite de nombres entiers dans laquelle chaque nombre est la somme des deux nombres qui le précèdent. Elle commence par les nombres 0 et 1.
Voici les premières valeurs de cette suite :
| \(F_0\) | \(F_1\) | \(F_2\) | \(F_3\) | \(F_4\) | \(F_5\) | \(F_6\) | \(F_7\) | \(F_8\) | \(F_9\) | \(F_10\) |
| \(0\) | \(1\) | \(1\) | \(2\) | \(3\) | \(5\) | \(8\) | \(13\) | \(21\) | \(34\) | \(55\) |
1) Écrire une fonction récursive fibo_rec(i:int)->int qui prend un entier i en paramètre et renvoie la valeur du ième terme de la suite de Fibonacci. Ainsi, fibo_rec(6) doit renvoyer 8.
2) Écrire une fonction non récursive fibo_seq(i:int)->int qui prend un entier i en paramètre et renvoie la valeur du ième terme de la suite de Fibonacci. Ainsi, fibo_seq(6) doit renvoyer 8.
3) Indiquer en justifiant laquelle des deux fonctions utilise le moins de ressource processeur.