0% ont trouvé ce document utile (0 vote)
76 vues22 pages

Chap1 La Récursivité

Ce document présente un cours sur l'algorithmique et les structures de données, axé sur la récursivité et les pointeurs. Il décrit les objectifs d'apprentissage, le plan de cours, ainsi que des exemples d'applications de la récursivité, comme la factorielle et la suite de Fibonacci. Les avantages et inconvénients de la programmation récursive sont également abordés, soulignant son efficacité et ses exigences en mémoire.

Transféré par

edutec789
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues22 pages

Chap1 La Récursivité

Ce document présente un cours sur l'algorithmique et les structures de données, axé sur la récursivité et les pointeurs. Il décrit les objectifs d'apprentissage, le plan de cours, ainsi que des exemples d'applications de la récursivité, comme la factorielle et la suite de Fibonacci. Les avantages et inconvénients de la programmation récursive sont également abordés, soulignant son efficacité et ses exigences en mémoire.

Transféré par

edutec789
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Institut Supérieur des Etudes

Technologiques de Mahdia

Support de cours

Algorithmique et
structures de
données 2
Enseignante : Mme Ikram Chebbi
Classe : TI2
2 01/03/2021

Fiche matière Objectifs généraux


Présentation  Ce cours vise à:
Domaine de formation : Sciences et  Approfondir les compétences
technologies acquises en algorithmique tout en
Mention : Technologies de l’informatique (TI) s’initiant aux notions et principes de

Parcours : Tronc Commun (TC) l’algorithmique avancée.

Semestre : S2  Se familiariser avec la notion de


pointeur et des structures de
Unité d’enseignement : Programmation et
données dynamiques (liste, piles, files
Structures Dynamiques
et arbres).
Volume horaire : 42 heures (28 cours – 14 TD)
 Etre capable de transformer un
Coefficient : 2
schéma itératif simple en schéma
Prérequis: ASD 1
récursif.
Evaluation Moyens pédagogiques
• Evaluation orale: participation, interrogation.
• Présentation, tableau, support de
• Evaluation écrite : 2 tests (20mn chacun) , DS
cours , schémas, travaux dirigées.
(1 heure) et examen (1.5 heures). Ikram Chebbi-AP2
3 01/03/2021

Plan de cours
 Chapitre 1: La récursivité

 Chapitre 2: Les pointeurs

 Chapitre 3: Les listes chaînées

 Chapitre 4: Les piles

 Chapitre 5: Les files

 Chapitre 6: Les arbres

Ikram Chebbi-AP2
Chapitre 1
La récursivité

Ikram Chebbi-AP2
5 01/03/2021

Plan
 Qu’est ce que la récursivité?

 Fonctions récursives

 Types de récursivité

 Applications
 Factorielle n

 Suite de Fibonacci

 Recherche dichotomique

 Avantages et inconvénients
Ikram Chebbi-AP2
6 01/03/2021

Qu’est ce que la récursivité?


 La récursivité est appuyée sur le raisonnement par récurrence.

 Un objet est défini récursivement lorsqu'il y a référence à l'objet


lui même dans la définition.

 On appelle récursive toute fonction ou procédure qui appelle


elle même.

 Typiquement il s'agit d'une suite dont le terme général s'exprime


à partir de termes qui le précédent.
 Par exemple la factorielle d'un nombre N donné est le produit des
nombres entiers inférieurs ou égaux à ce nombre N.

N!=N*(N-1)!=N*(N-1)*(N-2)!=….=N*(N-1)*…1
Ikram Chebbi-AP2
7 01/03/2021

Qu’est ce que la récursivité?


 Exemple

Ecrire une fonction récursive Somme permettant de sommer les N


premiers entiers. La fonction peut être définie comme suit :
Somme (N) = N + Somme(N − 1)
Somme(0) = 0

FONCTION Somme (N : entier) : entier DEBUT


SI (N=0) ALORS
RETOURNER (0)
SINON
RETOURNER (N + Somme (N-1)) FIN SI
FIN

Ikram Chebbi-AP2
8 01/03/2021

Fonctions récursives
Fonction Procédure

Fonction FnRecursive(paramètres):Type Procédure ProRecursive(paramètres)


Var (facultatif) Var (facultatif)
Début Début
si TEST_D’ARRET //Pas obligatoire le test d’arrêt
Instructions du point d’arrêt si TEST_D’ARRET
retourner …. Instructions du point d’arrêt
sinon sinon
Instructions Instructions
// appel récursif // appel récursif
FnRecursive(paramètres changés) ProRecursive (paramètres changés)
Instructions Instructions
Fin si Fin si
Fin Fin

Ikram Chebbi-AP2
9 01/03/2021

Fonctions récursives
 Un algorithme récursif va jouer sur les paramètres en entrée de la
fonction qui seront modifiés à chaque nouvel appel de la fonction
dans son propre corps.

 Pour décrire l'algorithme sur une donnée d, on utilise l'algorithme lui


même sur un sous ensemble de d ou sur une donnée plus petite.

 Comme dans le cas d’une boucle, il faut un cas d’arrêt où l’on ne


fait pas d’appel récursif.

Règles

• Ne jamais réappliquer l'algorithme sur des données plus


grandes.
• Toujours effectuer un test de terminaison.
Ikram Chebbi-AP2
10 01/03/2021

Fonctions récursives
 Pour une fonction récursive, il y a trois aspects
fondamentaux :
 le test d'arrêt : comment s'arrête la succession des appels ?

 la décomposition des ou de la donnée(s) : sur quelle base


sont faits les appels successifs ?

 l'empilement puis le dépilement en mémoire des appels


successifs: chaque appel possède en effet ses propres
variables locales en mémoire (comme s'il s'agissait des
appels des fonctions différentes).
Ikram Chebbi-AP2
11 01/03/2021

Fonctions récursives
Exemple:
Procédure Affiche( n:entier)
Début
si n≤0 alors
Ecrire("Valeur négative ")
Sinon
Affiche(n-1)
Ecrire(n)
FinSi
Fin
Algorithme: appel
Début
Affiche(5)
Fin

Qu’affiche ce programme?
Ikram Chebbi-AP2
12 01/03/2021

Fonctions récursives
 Etape 1: empilement des appels

 Affiche(5), Affiche(4), Affiche(3), Affiche(2), Affiche(1),

Affiche(0).
Affiche(0)

 Etape 2: Arrêt des appels Affiche(1)

Affiche(2)
 Affichage de n qui vaut 0.
Affiche(3)
 Etape 3: dépilement des appels Affiche(4)

Affiche(5)
 Affichage de n correspondant

 Résultat: …………………….. Ikram Chebbi-AP2


13 01/03/2021

Fonctions récursives
 Si on modifie la procédure affiche comme suit:
Procédure Affiche( n:entier)
Début
si n≤0 alors
Ecrire("Valeur négative ")
Sinon
Ecrire(n)
Affiche(n-1)

FinSi
Fin

Quel sera le résultat d’exécution?


Ikram Chebbi-AP2
14 01/03/2021

Fonctions récursives
 Pile d’appels
 Pour chaque appel de la fonction récursive, un espace
mémoire est alloué pour toutes ses données. Ceci est
libéré à la fin de l'exécution de la fonction.

 Tous les appels des fonctions sont stockés dans une pile en
mémoire.

 Un pile fonctionne comme une pile d'assiettes: les assiettes


à laver sont empilées les unes sur les autres au fur et à
mesure de leur arrivée. Au lavage, la dernière arrivée est
la première lavée ( Last In First Out).

Ikram Chebbi-AP2
15 01/03/2021

Fonctions récursives
 Exécution

L’exécution se déroule en suivant une descente récursive ensuite une


remontée récursive, comme montre la figure suivante :

Ikram Chebbi-AP2
16 01/03/2021

Types de récursivité
Récursivité Simple Récursivité Croisée
Tous les appels récursifs apparaissent dans Pour ce type de récursivité, les appels récursifs
le corps du sous-programme récursif. sont provoqués par l’exécution d’autres
Une procédure récursive simple suit ce procédures ou fonctions suivant ce modèle :
modèle : SOUS_PROGRAMME P_rec (X)
DEBUT
PROCEDURE Prec (Paramètres) DEBUT Si (condition d’arrêt) ALORS
Si (condition d’arrêt) ALORS <Instructions>
SINON
<Instructions>
[<Instructions>]
SINON Q_rec (F(X))
[<Autres instructions>] [<Instructions>]
Prec (Paramètres changés) FIN SI FIN
[<Autres instructions>]
FIN SI FIN SOUS_PROGRAMME Q_rec (Y)
DEBUT
Si (condition d’arrêt) ALORS
<Instructions>
SINON
[<Instructions>]
P_rec (G(Y))
[<Instructions>]
FIN SI
FIN
Ikram Chebbi-AP2
17 01/03/2021

Application1: Factorielle n
 Factorielle(n) = n*(n-1)*(n-2)*...*2*1
 Cas géneral : Factorielle(n) = n*Factorielle(n-1)

 Cas particuliers : Factorielle(1) = 1 et Factorielle(0) = 1

Ikram Chebbi-AP2
18 01/03/2021

Application 2: Suite de Fibonacci


 Cas général: Fibo(n) = Fibo(n-1) + Fibo(n-2)

 Cas particuliers: Fibo(0) = 1, Fibo(1) = 1

FONCTION FIB (N : entier) : entier


Debut
SI (N=0) ALORS
RETOURNER (1)
SINON
RETOURNER (FIB(N-2) + FIB (N-1))
FIN SI
FIN

Cette fonction nécessite 2 appels récursifs : fonction dyadique.

Ikram Chebbi-AP2
19 01/03/2021

Application 3:
 On considère les deux suites mathématiques U et V définies
comme suit :
Un = 2×Vn-1 +3 si n >=1
Vn = 3×Un-1 +2 si n>=1
U0 = 1 ; V0 = 2
FONCTION U (n : entier) : entier DEBUT
SI (n=0) ALORS
RETOURNER (1) FONCTION V (n : entier) : entier DEBUT
SINON SI (n = 0) ALORS
RETOURNER (2*V(n-1) + 3) FIN SI RETOURNER (2)
FIN SINON
RETOURNER (3* U(n-1) + 2)
FIN SI
FIN

Ikram Chebbi-AP2
20 01/03/2021

Application 3: Recherche dichotomique

 Recherche par dichotomie d'un élément x dans


un tableau trié T de dimension n.

 Principe:

 Comparer l‘élément x à une valeur située au milieu du


tableau.

 Si cette valeur est différente de x, continuer la recherche


sur le demi-tableau susceptible de contenir x (partie
gauche ou partie droite du tableau).

Ikram Chebbi-AP2
21 01/03/2021

Recherche dichotomique

Ikram Chebbi-AP2
22 01/03/2021

Avantages et inconvénients
La programmation récursive est très proche de la définition
mathématique du problème.

Très facile à implémenter


→ Mais, ne pas oublier les critères d’arrêt car risque d’une boucle infinie.

Peut être coûteuse en temps machine.

Nécessite un espace mémoire important pour l’empilement des

appels.

Règle
• Toute fonction récursive peut être écrite sous forme
itérative (l'inverse n'est pas vrai).
Ikram Chebbi-AP2

Vous aimerez peut-être aussi