TD1 - Prise en main de la récursivité
Objectifs
- Comprendre le concept de récursivité ;
- Identifier les cas d'arrêts et cas généraux ;
- Traduire un programme en récursif ;
- Écrire un programme récursif.
Les fonctions python
- Se créer un dossier
Terminale NSIsur votre ordinateur ou clé USB - Dans ce dossier, créer un dossier
Récursivité
Sur EduPython ou autre instance python, faire :
- Créer un nouveau fichier en cliquant sur l'icône
📄, ou en appuyant surCTRL+N - Enregistrer le fichier sous le nom
TP1_Prise_en_mainen cliquant sur l'icône💾, ou en appuyant surCTRL+S
TD/TP
Les questions sont à répondre sur une feuille/document word.
Vous êtes autorisés à programmer les fonctions sur python.
Exercice 1
On donne la fonction itérative suivante :
def fonction1(n):
res = 1
while n > 0 :
res = res * n
n = n - 1
return res
Exercices
- 1Expliquer ce que fait la fonction.
- 2Quel est le cas d’arrêt de la fonction ?
- 3Quel est le cas général de la fonction ?
- 4Écrire cette fonction en récursif en suivant les cas trouvés plus haut.
- 5La fonction s’arrête-elle toujours ? Expliquer.
Exercice 2
L’algorithme d’Euclide permet de calculer le pgcd de deux nombres entiers, c’est-à-dire le plus grand entier positif divisant ces deux nombres, par des divisions successives.
Exercices
- 1Écrire l’algorithme itératif du pgcd, avec 2 entiers en paramètres (on utilisera le modulo).
- 2Déterminer le cas d’arrêt de la fonction.
- 3Déterminer le cas général de la fonction.
- 4Écrire la méthode du pgcd en récursif, en suivant les cas énoncés plus haut.
Exercice 3
La suite de Fibonacci est une suite mathématique définie comme suit :
- À l’initialisation, F0 = 0;
- À la première étape, F1 = 1;
- À l’étape n, Fn = Fn−1 + Fn−2 pour n > 1.
Exercices
- 1Déterminer les cas d’arrêt de la suite de Fibonacci.
- 2Déterminer le cas général de la suite de Fibonacci.
- 3Écrire l’algorithme récursif en suivant les cas énoncés plus haut.
- 4Expliquer pourquoi votre algorithme s’arrête.
Exercice 4
Soit la fonction suivante :
def fonction2(chaine):
res = 0
while chaine != "" :
res = res + 1
chaine = chaine[1:]
return res
Exercices
- 1Que fait la fonction suivante ?
- 2Quel est son cas d’arrêt ?
- 3Quel est son cas général ?
- 4Écrire cette fonction en récursif.