Vous êtes sur la page 1sur 8

Présentation du cours IF 410

Système discret: structure et algorithme


Oumarou ABDOU ARBI

Université de Maradi

1
Organisation du cours
1. Récursivité
2. Arbres binaires
3. Graphe
4. Parcours de graphe
5. Automates finis

2
Chap1: Récursivité
Qu’est-ce que la récursivité ?
Définition et exemple
Récursivité et itération
Comment programmer une fonction récursive ?
Résolution récursive d’un problème
Structure d’une fonction récursive
Exercices

3
Qu’est ce que la récursivité
Définition et exemple
Une fonction est dite récursive si elle s’appelle elle-même.

Exemple
La fonction suivante calcule la factorielle n! d’un nombre n. On se base sur la
relation de récurrence n! = (n − 1)! ∗ n.

FONCTION FactorielleRecursive(entier n): entier


Début
Si (n <= 0) Alors
retourner 1;
Sinon
retourner n*FactorielleRecursive(n-1); /* appel récursif */
Fin
L’appel d’une fonction à l’intérieur d’elle-même est nommé appel récursif. Un
appel récursif doit obligatoirement être dans une instruction conditionnelle
(sinon la récursivité est sans fin). 4
Qu’est ce que la récursivité
Récursivité et itération
On aurait aussi pu implémenter la fonction factorielle de manière itérative :

FONCTION FactorielleRecursive(entier n): entier


Début
entier i, resultat<-1;
Pour i allant de 1 à n pas 1 faire
resultat <- resultat *i;
Fin Pour
retourner resultat;
Fin

Lorsque c’est possible, on préfèrera la version itérative, qui consomme moins


de mémoire.

Programmer l’appel récursif de la factorielle et l’appel itératif et observer l’état


de la mémoire dans les deux cas 5
Comment programmer une fonction récursive
Résolution récursive d’un problème
Pour créer une fonction récursive, il faut :
1. décomposer un problème en un ou plusieurs sous-problèmes du même type.
On résout les sous-problèmes par des appels récursifs.
2. Les sous-problèmes doivent être de taille plus petite que le problème initial.
3. Enfin, la décomposition doit en fin de compte conduire à un cas élémentaire,
qui, lui, n’est pas décomposé en sous-problème. (condition d’arrêt).

Exemple
Problème : calculer n! .
Sous-problème : calculer (n − 1)! . On multipliera le résultat de la résolution
du sous-problème par n.

Le calcul de (n −1)! passe par le calcul de (n − 2)! , etc...

À la fin, le problème devient le calcul de 0! . C’est un problème élémentaire


6
le résultat vaut 1.
Comment programmer une fonction récursive
Structure d’une fonction récursive
FONCTION FonctionRécursive(type1 p1, type2 p2,..., typek pk): typeretour
Début
Si condition Faire /* condition d’arret */
retourner calcul; /* cas elementaire */
Sinon
FonctionRécursive(...); /* appel recursif */
...
FonctionRécursive(...); /* appel recursif */
retourner quelque-chose;
Fin Si
Fin

7
Récursivité
Exercice
1. Écrire une fonction récursive pour calculer la somme:

2.La suite de Fibonacci est définie par récurrence par :


u0 = 0 ; u1 = 1
un = un−1 + un−2 pour n ≥ 2
a) Donner un algorithme récursif pour calculer un . Combien y-a-t’il
d’appels récursifs pour le calcul de u6 ?
c) Donner un algorithme itératif pour calculer un .

Vous aimerez peut-être aussi