Vous êtes sur la page 1sur 30

RÉVISION ALGORITHMIQUE ET PROGRAMMATION

(BAC 2023)

CLASSE :
4ÈME SCIENCES DE L’INFORMATIQUE

THÈME :
LA RÉCURSIVITÉ

Préparé Par : Mr. Kribi Mohamed Haythem

1
PLAN

01
LA RÉCURSIVITÉ

02 03
EXERCICES CONSIGNES GÉNÉRALES
PARTIE 01

LA RÉCURSIVITÉ

3
Exemple 1: Film insiption

4
Exemple 2:

5
Exemple 3:

6
Exemple 4 : Les poupées russes ou matriochkas

7
Exemple 5 : La vache qui rit

8
I. INTRODUCTION
 Une fonction récursive est une fonction récursive
 Une fonction récursive est une fonction qui fait appelle à
elle-même
 On peut parler aussi d’une procédure récursive
 La programmation récursive est une technique de
programmation qui remplace les instructions de boucle (pour,
tant que, répéter) par des appels de fonction ou de procédure
L'itération et la récursivité, correspondent à deux modes de
pensée différents.

9
Exemple :

Soit une fonction « Somme » qui permet de calculer la somme de N premier


entiers naturel (avec N=5) : S = 5+4+3+2+1 =15

SOMME (5) = 5 + SOMME (4)

SOMME (4) = 4 +SOMME (3)

SOMME (3) = 3 + SOMME (2)

SOMME (2) = 2 + SOMME (1)

SOMME (1) = 1 + SOMME (0)

SOMME (0) = 0

10
Exemple :

Solution itérative Solution récursive


(non récursive)

Fonction Somme (N : Entier) : Entier Fonction Somme (N : Entier) : Entier


Début Début
S←0 SI (N=0) Alors
Pour i de 1 à N Faire Retourner 0
S←S+i SINON
Fin Pour Retourner N+Somme (N-1)
Retourner S Fin SI
Fin Fin

11
II. Les parties constitutives d’une fonction
récursive
La solution récursive comporte :
Une condition d’arrêt de l’appel récursif
Un appel récursif en changeant la valeur d’un ou plusieurs
paramètres
Fonction Somme (N : Entier) : Entier
Début Condition d'arrêt
Si (N=0) Alors (pas d'appel récursif)
Retourner 0
Sinon
Retourner N+Somme (N-1)
Fin SI
Appel récursif avec
Fin changement de valeur
de paramètre
12
II. Les parties constitutives d’une fonction
récursive

La récursivité utilise la « pile » du programme en cours.


Cette « pile » est une zone mémoire réservée à chaque programme.
Son rôle est de stocker les variables locales et les paramètres d'une
fonction récursive et surtout les valeurs en attente d’utilisation
Dans une fonction récursive, toutes les variables locales/Valeurs sont
stockées dans la pile, et empilées autant de fois qu'il y a d'appels
récursifs. Ensuite, les variables sont désempilées
Le fonctionnement de la pile utilise le principe dit LIFO (Last int First
Out)
La pile se remplit progressivement, et si on ne fait pas attention on arrive
à un « débordement de pile ». 13
II. Mécanisme de fonctionnement d’une pile
Pile d'exécuter Chargement de la pile

Somme(5)
3 + Somme(2)
4 + Somme(3) 4 + Somme(3)
5 + Somme(4) 5 + Somme(4) 5 + Somme(4)

0
1 +Somme(0)
1 +Somme(0)
2 + Somme(1) 2 + Somme(1)
2 + Somme(1)
3 + Somme(2) 3 + Somme(2)
3 + Somme(2)
4 + Somme(3) 4 + Somme(3)
4 + Somme(3)
5 + Somme(4) 5 + Somme(4) 14
5 + Somme(4)
II. Mécanisme de fonctionnement d’une pile

Déchargement de la pile

0
1 +Somme(0) 1 +0
2 + Somme(1) 2 + Somme(1) 2 +1
3 + Somme(2) 3 + Somme(2) 3 + Somme(2)
4 + Somme(3) 4 + Somme(3) 4 + Somme(3)
5 + Somme(4) 5 + Somme(4) 5 + Somme(4)

Pile vide

3 +3 Somme(5)=15
4 + Somme(3) 4 +6
5 + Somme(4) 5 + Somme(4) 5 10
15
PARTIE 02

EXERCICES

16
EXERCICE N°1: PGCD
Ecrire une fonction récursive permettant de calculer et de retourner le PGCD de
deux entiers A et B (A>0 et B>0) en utilisant la méthode par soustraction
Exemple : Pour A=28 et B=16
A>B A=A-B =28-16=12
B>AB=B-A=16-12=4
A>BA=A-B=12-4=8
A>BA=A-B=8-4=4
A=B=4 Donc PGCD(28,16)=4
Analyse:
1. Condition d’arrêt :A=B Retourner A ou B
2. Appels récursif : Appel avec modification de A / Appel avec modification
de B
3. Paramètres : A et B
17
CORRECTION EXERCICE N°1: PGCD
Fonction PGCD(A: Entier, B: Entier): Entier
Début
Si A=B Alors Condition d'arrêt
(pas d'appel récursif)
Retourner A
Sinon Si (A>B)Alors
Retourner PGCD(A-B, B) 1ère appel récursif
Sinon
Retourner PGCD(A, B-A)
Fin Si
Fin 2ème appel récursif

18
EXERCICE N°2: NOMBRE PREMIER

Ecrire une fonction récursive permettant de vérifier si un entier X >1 est premier
ou non.
Un nombre X est dit premier s’il est divisible uniquement par 1 et par lui-même
Exemple : 2, 3, 5, 7, 11, 13, 17 , etc.
Analyse:
1. Conditions d’arrêt :
 Trouver un diviseur inférieur ou égal à X div 2 Faux
 Dépasser X div 2Vrai
2. Appels récursif : Appel avec incrémentation du compteur
3. Paramètres : Un entier X et un entier D (Compteur)

19
CORRECTION EXERCICE N°2: NOMBRE PREMIER
Fonction Premier(X: Entier, D: Entier): Booléen
Début
Si D> X Div 2 Alors 1ère condition d'arrêt
X est Premier
Retourner Vrai
Sinon Si (X Mod D =0)Alors
2ème condition d'arrêt
Retourner Faux X n’est pas premier
Sinon
Retourner Premier(X, D+1)
Fin Si
Fin Appel récursif avec
incrémentation du compteur
Voici le code appelant de la fonction « Premier »

BPremier (X, 2)

20
EXERCICE N°3: NOMBRE COMBINAISON
Pour calculer le nombre de combinaison de P éléments (P>=0) parmi N>=p)
est basée sur les règles suivantes :
Si P=0 Alors =1
Si P=N Alors =1
Si P >= 1, N > P Alors = +
Analyse:
1. Déterminer la condition d’arrêt :
 Si P=0 Le nombre de combinaison est 1
 Si P=N Le nombre de combinaison est 1
2. Appels récursif : Double appel récursif avec modification de P et de N
3. Paramètres : Deux entiers N et P

21
CORRECTION EXERCICE N°3: NOMBRE COMBINAISON

Fonction Comb(N: Entier, P: Entier): Booléen


Début
Si P=0 ou P=N Alors Double condition d’arrêt
P=0 ou P=N
Retourner 1
Sinon
Retourner Comb (N-1, P)+Comb (N-1, P-1)
Fin Si
Fin

Double appel récursif


Comb (N-1, P)+Comb (N-1, P-1)

22
EXERCICE N°4: CONVERSION DE B10 VERS B2

Ecrire une fonction récursive


permettant de convertir un nombre X
en base 10 vers la base 2.
Exemple : (23)10 (10111)2 en effet

Analyse:
1. Déterminer la condition d’arrêt : La valeur de X est égale à 0 ou 1Retourner
‘’0’’ ou ‘’1’’
2. Appel Récursif: Appel avec modification de la valeur de X et en sauvegardant le
reste dans la pile
3. Paramètre : Un entier X positif

23
CORRECTION EXERCICE N°4: CONVERSION DE B10 VERS B2

Fonction Conv10_2(X : Entier): Chaine


Début Condition d’arrêt X=0
ou X=1
Si X<=1 Alors
Retourner ConvCh(X)
Sinon
Retourner Conv10_2(X Div 2) + ConvCh(X Mod 2)
Fin Si
Fin
Appel récursif avec utilisation
de la pile d’exécution

N.B: L’appel doit être effectuer avant la sauvegarde du reste afin que le

dernier reste de la division soit situer à gauche du nombre binaire


24
Fonction Conv10_2(X : Entier): Chaine
Début
Pile de la fonction «Conv10_2» Si X<=1 Alors
Retourner ConvCh(X)
Sinon
Retourner Conv10_2(X Div 2) + ConvCh(X Mod 2)
Fin Si
Pile d'exécuter Chargement de la pile Fin

Conv10_2(23)

Conv10_2(5)+ ‘1’
Conv10_2(11)+ ‘1’ Conv10_2(11)+ ‘1’

‘1’
Conv10_2(1)+ ‘0’ Conv10_2(1)+ ‘0’
Conv10_2(2)+ ‘1’ Conv10_2(2)+ ‘1’ Conv10_2(2)+ ‘1’
Conv10_2(5)+ ‘1’ Conv10_2(5)+ ‘1’ Conv10_2(5)+ ‘1’
Conv10_2(11)+ ‘1’ Conv10_2(11)+ ‘1’ Conv10_2(11)+ ‘1’
25
Pile de la fonction «Conv10_2»
Déchargement de la pile

‘1’
Conv10_2(1)+ ‘0’ ‘10’
Conv10_2(23)
Conv10_2(2)+ ‘1’ Conv10_2(2)+ ‘1’
Conv10_2(5)+ ‘1’ Conv10_2(5)+ ‘1’
Conv10_2(11)+ ‘1’ Conv10_2(11)+ ‘1’

Conv10_2(23)=‘10111’

‘101’
Conv10_2(5)+ ‘1’ ‘1011’
Conv10_2(11)+ ‘1’ Conv10_2(11)+ ‘1’ ‘10111’ 26
EXERCICE N°5: CONVERSION DE B16 VERS B10

Ecrire une fonction récursive permettant de convertir un nombre Hex en


base 16 vers la base 10.
Exemple : (2FA)16 (762)10 en effet :(2FA)16=2*162+15*161+10*160
=2*256+15*16+10
=512+240+10=(762)10
Analyse:
1. Condition d’arrêt : La chaine Hex est vide Retourner 0
2. Appel Récursif: Appel avec prise en considération de la nature
du caractère (chiffre ou Lettre)
3. Paramètres : La chaine (Hex) et la Puissance (P)

27
CORRECTION EXERCICE N°5: CONVERSION DE B16 VERS B10

Fonction Conv16_10(Hex: Chaine, P: Entier): Entier


Début
Condition d'arrêt
Si Hex=’’ ’’ Alors (pas d'appel récursif)
Retourner 0
Sinon
LLong(Hex)-1 1ère appel récursif
CHex[L]
Si (‘’0’’<=C<=‘’9’’)Alors
Retourner Valeur(C)*P+Conv16_10(Sous_chaine(Hex,0, L), P*16)
Sinon
Retourner (Ord(C)-65)*P+Conv16_10(Sous_chaine(Hex,0, L), P*16)
Fin Si
Fin Si 2ème appel récursif
Fin Voici le code appelant de la fonction « Conv16_10 »

XConv16_10 (Hex, 1)
28
PARTIE 03 : CONSIGNES GÉNÉRALES

 Bien lire l’énoncé de chaque exercices de l’épreuve


théorique,

 Commencer par l’exercice le plus simple

 Résoudre le plus que possible d’exercices (en terme


de points)

 Chaque instruction est notée

 Une écriture clair et simple est demandée


29
30

Vous aimerez peut-être aussi