1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.

Slides:



Advertisements
Présentations similaires
ALGORITHMES RECURSIFS
Advertisements

Récursivité.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
1 Chapitre 2 La numération binaire. 2 Chapitre 2 : La numération binaire Introduction 1 - Le système binaire 2 - La conversion des nombres entiers 2.1.
1- Introduction 2ème partie Modèle Conceptuel des Données 2- Entités- Associations 4- Associations plurielles 3- Cardinalités 5- Associations réflexives.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
CINI – Li115 1 Semaine 6 Les fonctions ● Pourquoi écrire des fonctions ? ● Définition de fonctions ● Fonction main ● Appels de fonctions ● Portée des variables.
CINI – Li115 1 Semaine 10 Les pointeurs ● Notion d'adresse ● Déclaration et utilisation de pointeurs ● "Types pointeur" et initialisation des pointeurs.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Tableaux en C Mardi 2/05.
Le Langage JavaScript pour le web
Langages de programmation TP6
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Modèle objet : les classes
Les Instructions Itératives (Les Boucles)
Dominique PETRELLA – Frédéric GUINEPAIN - IA-IPR STI Versailles
Pas de variable globale
Les notions de classe et d'objet
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Algorithmique et programmation de modèles numériques
Instructions de contrôle
Techniques de décomposition
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Principes de programmation (suite)
Algorithmique Langage C
Master Réseaux et Systèmes Distribués (RSD)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
11ième Classe (Mardi, 18 novembre) CSI2572
Techniques d’Optimisation Chapitre 2: Problème de flôt
Semaine 11 Les pointeurs (suite)
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Techniques d’Optimisation Chapitre 3: Programmation en 0-1 (bivalente)
Programmation Impérative II
C1 – Interpolation et approximation
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
1 Exemple d’un document (article). 2 XML: eXtensible Markup Language Wikipédia XML (Extensible Markup Language, « langage de balisage extensible ») est.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Programmation en C++ C++ de base
Le Java premiers pas.
Les classes et les objets
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Rappels sur le grafcet Normes NF EN CEI /01/2019
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Dépiler et mettre valeur dans RT (récup. paramètre)
CSI 3505 Algorithmes Voraces
H. Wertz -- Exécution Symbolique
RABAH M ed Ali 2018/2019
PROGRAMMATION ET ENSEIGNEMENT
Principes de programmation (suite)
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Tableaux Cours 06.
QCM Pointeurs 2 / Q1 On considère la déclaration suivante : char *ptc ; ptc peut contenir : 1) des valeurs de variables de type caractère 2) des adresses.
Réalisé par: SAMMARI RIM SOUID AHLEM AMROUCH HAFEDH
Merise le modèle de traitement
Structure de données Les listes.
PROGRAMMATION SOUS R. PRESENTE PAR : ACHETTOU ISMAIL LAARICH TARIQ ENCADRE PAR : Pr. EXPOSÉ SUR LA PROGRAMMATION SUR R 2.
Transcription de la présentation:

1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

2 Récursivité Principe de base de la récursivité dans les langages de programmation Quelques exemples incontournables… Traitement récursif des listes Traitement récursif des arbres

3 Conditions d ’application Définition récurrente d’un ensemble : Description des éléments de base + Règles de construction récursive Les règles de construction récursives permettent de caractériser les éléments d'un ensemble à partir d'éléments plus simples du même ensemble (en général obtenus ou construits à l'étape précédente). Il y a toujours un – ou plusieurs – éléments de base. Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

4 Récursivité en informatique En informatique les traitements récursifs doivent s ’appliquer à partir d’un modèle récursif cohérent. S'il s'agit des éléments d'un ensemble, ils doivent être construits à partir d'une définition récursive et d'un élément de base. (Suite de fibonacci…) S'il s'agit d'une méthode de résolution, le problème à résoudre doit se décomposer en sous-problèmes de même nature, et ce jusqu'à une formulation élémentaire (problème de base). Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

5 Exemple de définition récurrente : Factorielle Récurrence Fact(0) = 1, n = 0; Fact(n) = Fact(n-1)*n, n > 0; Fonction C associée long factrec (int n) { if (n == 0) return 1; return n*factrec(n-1); } Formule Fact(0) = 1, n = 0 ; Fact(n) = 1*2*3…*n, n > 0 ; Fonction C associée long factit (int n) { int fact=1; while (n > 0) { fact =fact*n; n--;} return fact; } Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

6 Suite de nombre de Fibonnacci Définition : Fibo(1) = Fibo(2) = 1, Fibo(n) = Fibo(n-1) + Fibo(n-2) pour n > 2, Fonction C associée int fibo (int n) { if ((n==1)||(n==2)) return 1; if (n>2) return (fibo(n-1)+fibo(n-2)); } Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

7 Récursivité dans les langages de programmation Dans les langages de programmation la récursivité est la possibilité donnée à une fonction (ou une procédure) à s’appeler (se rappeler) elle-même. Les schémas de programmation qui en découlent sont en général plus simples et plus concis. Le prix à en payer est en général une consommation mémoire à l’exécution plus importante et un temps de traitement plus long. Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

8 Récursivité dite directe Une fonction qui s’appelle elle-même. L’appel récursif est conditionné à un test. Les instructions de pré traitement se déroulent avant l’appel récursif. Les instruction de post traitement après l’appel récursif. Attention les variables déclarées en local ne changent pas de valeur. Les variables globales ou modifiées par leurs adresses peuvent ne plus avoir les mêmes valeurs avant et après l’appel récursif. Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

9 Modèle de fonction récursive directe void recursive(void) { if (test arrêt) recursive() } Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

10 Modèle de fonctions récursives indirectes void recursiveA(void) { if (test continuation B) recursiveB(); } void recursiveB(void) { if (test continuation A) recursiveA(); } Récursivité indirecte Une fonction A appelle une fonction B. La fonction B appelle la fonction A. Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

11 Récursivité directe : exemple Une fonction rec() qui s'appelle elle même 3 fois. chaque nouvel appel conserve l'adresse de retour. Les instructions de pré-traitement sont exécutées avant les appels récursifs. Les instructions de post-traitement sont exécutées après les appels récursifs, dans l'ordre de dépilement, c'est à dire inverse. Ch. PAUL ALGORITHMIQUE Présentation de la récursivité

12 Récursive directe exemple avec 3 appels récursifs void rec(void) { if (cont) rec() } Ch. PAUL ALGORITHMIQUE Présentation de la récursivité void rec(void) { if (cont) rec() } void rec(void) { if (cont) rec() } appel récursif : branchement retour récursif : instruction suivante de la fonction appelante