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 NSI
sur 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_main
en 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
- Expliquer ce que fait la fonction.
- Quel est le cas d’arrêt de la fonction ?
- Quel est le cas général de la fonction ?
- Écrire cette fonction en récursif en suivant les cas trouvés plus haut.
- La 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.
- Écrire l’algorithme itératif du pgcd, avec 2 entiers en paramètres (on utilisera le modulo).
- Déterminer le cas d’arrêt de la fonction.
- Déterminer le cas général de la fonction.
- É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.
- Déterminer les cas d’arrêt de la suite de Fibonacci.
- Déterminer le cas général de la suite de Fibonacci.
- Écrire l’algorithme récursif en suivant les cas énoncés plus haut.
- Expliquer 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
- Que fait la fonction suivante ?
- Quel est son cas d’arrêt ?
- Quel est son cas général ?
- Écrire cette fonction en récursif.