[PDF] Algorithmique Récursivité Algorithmique. Récursivité. Florent Hivert.





Previous PDF Next PDF



QUELQUES ACTIVITÉS AVEC R LOGICIEL PROFESSIONNEL DE

06-Apr-2013 sortir l'algorithmique et l'utilisation des TICE en mathématiques du simple rôle ... supérieur dispensant des cours de statistique3.



algorithmique.pdf

Il s'agit d'afficher la valeur d'une variable. Syntaxe : « afficher a ». Syntaxe des instructions. Algorithme papier algobox. Calculatrice TI. Calculatrice 



Algorithmique Récursivité

Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr La Pile d'exécution (call stack) du programme en cours est un.



algorithmique seconde

Un peu d'exercice pour retrouver la forme . VII.3 Dichotomie . ... Remarque : vous avez déjà rencontré beaucoup d'algorithmes au cours de votre ...



Mathématiques

grâce à un algorithme de dichotomie. rencontrée dans un cours de mathématiques sauf dans les exercices de « vrai- faux ». ... Avec le logiciel Algobox.



Introduire des éléments dalgorithmique dans un cours de

L'algorithme de dichotomie est d'autant plus intéressant qu'il est déjà et l'examen du cours de Programmation et Algorithmique I de janvier 2014.



Mathematical Working Space Espacio de Trabajo Matemático

en ligne (http://turing.scedu.umontreal.ca/etm/documents/Actes-ETM3.pdf). L'Algorithme de Dichotomie « Discret » : une Stratégie «Rapide» et «Gagnante» ...



Programmer en lycée avec Python

et les corrections des exercices de la première partie. Ce livret ainsi que ses ressources numériques (programmes rédigés en Python



Linformatique objets denseignements enjeux épistémologiques

11-Feb-2020 questions soulevées par ces premiers cours d'informatique dans ... Alayrangues S. et al. Une analyse des exercices d'algorithmique et de ...



UNIVERSITÉ DE SHERBROOKE Faculté déducation Conception d

l'enseignement de l'algorithmique adapté aux besoins des cours de programmation pour l'écriture d'algorithmes permettant la résolution d'exercices.

1 de 11

Algorithmique

Récursivité

Florent Hivert

Mél :Florent.Hivert@lri.fr

Adresse universelle :http://www.lri.fr/˜hivert

2 de 11

Récursivité et Récurrence

Deux notions très proche :mathématiques : récurrence informatique : récursivité De nombreuses définitions mathématiques sont récursives :Définition (Peano)

0 est un entier naturel.

Tout entierna un successeur uniqueSn(=n+1);Tout entier sauf0est le successeur d"un unique entier;Pour tout énoncéP(n)siP(0)est vrai et si pour toutn,P(n)

impliqueP(Sn)alors l"énoncé8n:P(n)est vrai.

3 de 11

Définition

Moyen simple et élégant de résoudre certain problème.Définition On appelle récursive toute fonction ou procédure qui s"appelle elle même.Algorithme Fact

Entrée : un entier positif N

Sortie : factorielle de N

si N = 0 retourner 1 sinon retourner N x Fact(N-1)

4 de 11

Exemple dans un vrai langage de programmation

unsigned int fact(unsigned int N) if (N == 0) return 1; else return N*fact(N-1);

4 de 11

Exemple dans un vrai langage de programmation

unsigned int fact(unsigned int N) if (N == 0) return 1; else return N*fact(N-1);

Ça marche!!!

5 de 11

Comment ça marche?

Appel à fact(4)

. 4*fact(3) = ? . Appel à fact(3) . . 3*fact(2) = ? . . Appel à fact(2) . . . 2*fact(1) = ? . . . Appel à fact(1) . . . . 1*fact(0) = ? . . . . Appel à fact(0) . . . . Retour de la valeur 1 . . . . 1*1 . . . Retour de la valeur 1 . . . 2*1 . . Retour de la valeur 2 . . 3*2 . Retour de la valeur 6 . 4*6

Retour de la valeur 24

6 de 11

Notion de pile d"exécution

Définition (Pile d"exécution)

LaPile d"exécution(call stack) du programme en cours est un emplacement mémoire destiner à mémo riserles pa ramètres,les variables locales ainsi que l"adresse de retour de chaque fonction en cours d"exécution.Elle fonctionne selon le principe LIFO (Last-In-First-Out) : dernier entré premier sorti.

Attention!

La pile à une taille fixée, une mauvaise utilisation de la récursivité peut entraîner un débordement de pile (stack overflow).

6 de 11

Notion de pile d"exécution

Définition (Pile d"exécution)

LaPile d"exécution(call stack) du programme en cours est un emplacement mémoire destiner à mémo riserles pa ramètres,les variables locales ainsi que l"adresse de retour de chaque fonction en cours d"exécution.Elle fonctionne selon le principe LIFO (Last-In-First-Out) : dernier entré premier sorti.Attention!La pile à une taille fixée, une mauvaise utilisation de la récursivité peut entraîner un débordement de pile (stack overflow).

6 de 11

Notion de pile d"exécution

Définition (Pile d"exécution)

LaPile d"exécution(call stack) du programme en cours est un emplacement mémoire destiner à mémo riserles pa ramètres,les variables locales ainsi que l"adresse de retour de chaque fonction en cours d"exécution.Elle fonctionne selon le principe LIFO (Last-In-First-Out) : dernier entré premier sorti.Attention!La pile à une taille fixée, une mauvaise utilisation de la récursivité peut entraîner un débordement de pile (stack overflow).

7 de 11

Point terminal

Retenir

Comme dans le cas d"une boucle, il faut un cas d"arrêt où l"on ne fait pas d"appel récursif.procédure récursive(paramètres): si TEST_D"ARRET: instructions du point d"arrêt sinon instructions récursive(paramètres changés); // appel récursif instructions

8 de 11

Détail d"un appel de fonction

PA =Programme App elant F

=F onctionapp elée1LeP Aréserveet initialise les pa ramètressur la pile 2transfert du contrôle duP AàF avec

enregistrement de l"adresse de retoursur la pile3réservation sur la pile des variables locales deF Retenir

L"ensemble : paramètres + adresse de retour + variables locales

constitue leTableau d"activation (Stack Frame)deF 4exécution du code deF dansson T Ajusqu"à return5désallocation du TA deF dela pile 6retour auP Aàl"adresse enregistrée à l"étap e2, avec

transmission de lavaleur de retourdans le cas échéant

9 de 11

La récursivité terminale

Définition

On dit qu"un fonction est récursive terminale, si tout appel récursif est de la formereturn f(...)Autrement dit, la valeur retournée est directement la valeur obtenue par un appel récursif, sans qu"il n"y ait aucune opération sur cette valeur. Il n"y a ainsi rien à retenir sur la pile.

Entrée : Entiers positifs n, a

Sortie : a*n!

si n == 0 retourner a sinon retourner Algo(n-1,n*a)

9 de 11

La récursivité terminale

Définition

On dit qu"un fonction est récursive terminale, si tout appel récursif est de la formereturn f(...)Autrement dit, la valeur retournée est directement la valeur obtenue par un appel récursif, sans qu"il n"y ait aucune opération sur cette valeur. Il n"y a ainsi rien à retenir sur la pile.Entrée : Entiers positifs n, a

Sortie : a*n!

si n == 0 retourner a sinon retourner Algo(n-1,n*a)

10 de 11

La récursivité terminale (2)

Idée : Il n"y a rien à retenir sur la pile.Retenir Quand une fonction est récursive terminale, on peut transformer l"appel récursif en une boucle, sans utilisation de mémoire supplémentaire.Attention!cette optimisation n"est pas supp ortéepa rtous les compilateurs et est optionnelle (ex :-O3avecgcc). si n == 0 retourner a sinon retourner Algo(n-1,n*a)

Devient :

Tant que n <> 0:

a <- n*a; n <- n-1 retourner a

10 de 11

La récursivité terminale (2)

Idée : Il n"y a rien à retenir sur la pile.Retenir Quand une fonction est récursive terminale, on peut transformer l"appel récursif en une boucle, sans utilisation de mémoire supplémentaire.Attention!cette optimisation n"est pas supp ortéepa rtous les compilateurs et est optionnelle (ex :-O3avecgcc). si n == 0 retourner a sinon retourner Algo(n-1,n*a)

Devient :

Tant que n <> 0:

a <- n*a; n <- n-1 retourner a

11 de 11

La récursivité terminale (3)

L"optimisation peut se faire appel par appel.Retenir Quand une appel est récursive terminal, on peut le transformer en un saut, sans utilisation de mémoire supplémentaire.Exemple : le tri rapide tri_rapide(tableau T, entier premier, entier dernier) si premier < dernier alors pivot := choix_pivot(T, premier, dernier) pivot := partitionner(T, premier, dernier, pivot) tri_rapide(T, premier, pivot-1) // Non terminal tri_rapide(T, pivot+1, dernier) // terminalquotesdbs_dbs45.pdfusesText_45
[PDF] algorithme de dichotomie en seconde PDF Cours,Exercices ,Examens

[PDF] algorithme de dichotomie premiere s PDF Cours,Exercices ,Examens

[PDF] algorithme de dichotomie scilab PDF Cours,Exercices ,Examens

[PDF] algorithme de dichotomie seconde PDF Cours,Exercices ,Examens

[PDF] algorithme de dichotomie terminale s PDF Cours,Exercices ,Examens

[PDF] Algorithme de dichotomie, encadrement damplitude

[PDF] algorithme de dijkstra PDF Cours,Exercices ,Examens

[PDF] algorithme de dijkstra exercice corrigé PDF Cours,Exercices ,Examens

[PDF] algorithme de ford plus long chemin PDF Cours,Exercices ,Examens

[PDF] Algorithme de héron Terminale Mathématiques

[PDF] Algorithme de mathématiques 2nde Mathématiques

[PDF] Algorithme de maths 1ère Mathématiques

[PDF] Algorithme de maths 2nde Mathématiques

[PDF] Algorithme de mesure d'angle 1ère Mathématiques

[PDF] Algorithme de niveau Seconde 2nde Mathématiques