CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.

Slides:



Advertisements
Présentations similaires
Explorer un espace d’états
Advertisements

Chapitre annexe. Récursivité
Portée des variables VBA & Excel
Fonctions & procédures
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
III- Les fonctions 1- Activité 02
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Exercices Algorithmiques
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Génération de colonnes
Cours de programmation
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL
ALGORITHMES RECURSIFS
Python La structure alternative
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
La structure conditionnelle simple
Récursivité.
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
ALGORITHMIQUE Plan du cours Généralités -définition -importance
Les structures de contrôle conditionnelles
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Introduction à la récursivité
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Semaine #1 INF130 par Frédérick Henri.
8PRO107 Éléments de programmation
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
CSI1502 Introduction au génie logiciel
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
ASI 3 Méthodes numériques pour l’ingénieur
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Python Fonction et procédure
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
Le langage C Structures de données
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Programmation linéaire en nombres entiers
Les tests.
Micro-intro aux stats.
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Variables et environnement utilisateur W. Barhoumi.
Cours LCS N°4 Présenté par Mr: LALLALI
Les algorithmes recursifs
Introduction à la récursivité
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
La Récursivité.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
La racine carrée.
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
Réalisation d’un logiciel de Chiffrement RSA.
La pile de crêpes.
Scripts et fonctions Instructions de contrôle
Une aide pour débutant éclairé
Algorithmique Tableaux de données
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département d’informatique et de génie logiciel Édition Septembre 2009.
Objets et Actions Élémentaires.
Algorithmique Algorithmique  Pascal
Algorithmique Conditions et Itérations Cours de BTS/CPI 1ère année Algo – Prog CPI/BTS1 – M. Dravet – 17/09/2003 Dernière modification: 17/09/2003.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Introduction à L’Algorithmique
Algorithmique Boucles et Itérations
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Algorithmes sur Open Office. 1. Ouvrir Visual Basic de Open Office.
FACTORY systemes Module 5 Section 1 Page 5-3 Les scripts de traitement FORMATION INTOUCH 7.0.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003

La récursivité Définition récursive d’un objet –Récursif: (adjectif), voir récursif. –La définition ou la description d’un objet X est récursive dès lors qu’elle fait référence à l’objet X lui- même (récursivité directe) ou à un objet Y dont la définition fait référence directement ou indirectement à X (récursivité indirecte).

La récursivité Exemples –Une chaîne de caractères est soit vide, soit constituée d’un caractère suivi d’une chaîne de caractères, –L’ ascendant d’une personne est soit son père, soit sa mère, soit un ascendant de son père ou de sa mère, –0 est un entier naturel. Le successeur d’un entier naturel est un entier naturel

Algorithmes récursifs Définition –Un algorithme (ou un sous-programme) est récursif lorsqu’il contient un ou plusieurs appels à lui-même (récursivité directe) ou à un autre algorithme (sous- programme) qui fait appel au premier. –La récursivité se retrouve souvent en algorithmique car elle permet de simplifier le travail de conception d’un algorithme.

Algorithmes récursifs Utilisation –L’utilisation de la récursivité dans l’écriture d’un algorithme est justifiée lorsque le problème posé peut se décomposer en sous problèmes de même nature mais de taille inférieure. –Pourquoi de taille inférieure ? Pour toujours avoir une condition de sortie …

Algorithmes récursifs Utilisation –Chaque sous problème est lui aussi décomposé en sous problèmes de même nature, et ainsi de suite jusqu’à ce que l’on obtienne des problèmes, dits triviaux, que l’on sait résoudre sans les décomposer. –Le dernier (ou plus bas) niveau de la récursivité qui permet d’obtenir des problèmes triviaux est aussi appelé “bottom” de la récursivité, ou cas d’arrêt.

Algorithmes récursifs Exemple –Un exemple facile de récursivité est donné par la définition mathématique de la factorielle. n! = n * (n - 1)! si n>0 et 0! = 1 –A partir de cette définition, on peut écrire très facilement un algorithme (ici une fonction) récursif qui calcule la valeur de n!

Algorithmes récursifs Exemple fonction Fact(données n:entier) : entier { retourne la valeur de n! pour tout n >= 0 } Début Si n = 0 Alors Fact retourne 1 Sinon Fact retourne n * Fact(n - 1) Fin si Fin

Algorithmes récursifs Exercice –Ecrire et analyser le déroulement de l’algorithme «Fact» de la diapositive précédente, afin d’en comprendre son fonctionnement.

Algorithmes récursifs Analyse –Lorsque l’on va demander “l’exécution” de cette fonction pour une valeur n strictement positive, la fonction va s’appeler elle-même pour calculer (n - 1)!, puis (n - 2)!, ainsi de suite jusqu’à lancer un appel Fact(0) qui est le cas trivial qu’elle résout tout de suite en retournant la valeur 1. –Cette valeur va alors “remonter” pour le calcul de fact(1), dont le résultat va remonter pour fact(2), ainsi de suite jusqu’à être revenu à fact(n).

Algorithmes récursifs Quand ne pas les utiliser ? –Quand il y a une solution itérative directe, –Quand la profondeur de la récursivité est “trop” grande et que cela entraîne un empilement de variables locales trop important. –Dans le cas de calculs redondants … Ex: Calcul d’une suite définie par la formule: U(0)=0, U(1)=1, U(N)=U(N-1)+U(N-2).

Algorithmes récursifs TP –Ecrire un programme avec fonction récursive calculant la valeur de la fonction d’Ackermann, définie pour m et n, entiers positifs ou nuls par: A(m,n) = A(m-1, A(m,n-1)) pour m>0 et n>0 A(0,n) = n+1 pour n> 0 A(m,0) = A(m-1,1) pour m>0 –Visualiser l’empilement des appels et leur dépilement par un message avec valeur des arguments –Le programme principal demande à l’utilisateur les valeurs de m et n.

Algorithmes récursifs TP function Ack (m, n: integer): integer; begin if m = 0 then return := n + 1 else if n = 0 then return := Ack (m - 1, 1) else return := Ack (m - 1, Ack (m, n - 1)); end;

Algorithmes récursifs –Récursion imbriquée La fonction d'Ackermann contient deux appels récursifs imbriqués, c'est ce qui la fait croître très rapidement. Un autre exemple est la fonction 91 de MacCarthy function f (n: integer): integer; begin if n > 100 then f := n - 10 else f := f(f(n+11)) end;

Algorithmes récursifs –Récursion imbriquée Le calcul de f(96) donne : f(96) = f(f(107) = f(97) = … = f(100) = f(f(111)) = f(101) = 91 On peut montrer que cette fonction vaut 91 si n 100. Cette fonction anecdotique, qui utilise la récursivité imbriquée, est intéressante car il n'est pas du tout évident qu'une telle définition donne toujours un résultat.

Algorithmes récursifs –Récursion imbriquée Par exemple, la fonction de Morris suivante: function g (m, n: integer): integer; begin if m = 0 then g := 1 else g := g(m - 1, g(m, n)); end; Exercice: Calculez g(1,0).

Algorithmes récursifs –Récursion imbriquée On a g(1,0) = g(0, g(1,0)) Cela forme une récursivité infinie: le calcul de g(1, 0) nécessite un nouveau calcul de g(1, 0). Bilan: il faut faire très attention aux intervalles de valeurs autorisés dans une fonction récursive, il y a possibilité de calcul infini. Dans un algo récursif, calcul infini = plantage car consommation de ressource exponentielle.

Algorithmes récursifs –A faire pour le prochain cours: se documenter sur l’algorithme de tri appelé QuickSort. –Le TP portera dessus et pourra être évalué pendant les deux heures.