[PDF] [PDF] Structures de données récursives





Previous PDF Next PDF



[PDF] Introduction à la programmation en Java La Récursivité - LACL

Bon ok : exécution en Java : int n = u(4); ? Il y a donc des calculs en attente le calcul sera fait « en profondeur » [dans une pile cf 



[PDF] Tableau et récursivité [rc05] - Exercice - Unisciel

Java - Tableau et récursivité (Solution) Mots-Clés Récursivité des actions ? Requis Axiomatique impérative ? Difficulté ••? (3 h) ? Objectif



[PDF] Récursivité des actions [rc] Exercices de cours - Unisciel

Déduisez une fonction récursive factoriel(n) qui calcule et renvoie le factoriel de n (en- tier) Validez votre fonction avec la solution Solution Java



[PDF] TP 1 : Récursivité - Denis PALLEZ

L'objectif de cette séance est de pratiquer la programmation récursive en Java Recommandations Immédiatement après chaque séance de TD/TP chaque étudiant 



[PDF] Récursivité

Chaque sous-programme Java (le programme principal “main” aussi) utilise une zone de mémoire pour stocker ses paramètres et ses variables locales De plus une 



[PDF] Structures de données récursives

La récursivité ne concerne pas seulement les traitements (les méthodes) mais également la repré java ce n'est pas le programme qui supprime les objets 



[PDF] Chapitre 11: Récursivité

Traversée labyrinthique : Maze java (suite ) public boolean traverse (int row int column) {



[PDF] TP n 7 - Correction

JAVA MASS L2 Année 2007-2008 TP n ? 7 - Correction Récursion Exercice 1 Dans le fichier Tris java écrire les méthodes public static void 



[PDF] La récursivité - Zeste de Savoir

12 août 2019 · La récursivité est un concept général qui peut être illustré dans Les langages impératifs Dans les langages impératifs (C Pascal Java



[PDF] INF 321 Récursivité

4 jui 2012 · (quand c'est possible) On peut bien sûr transformer ce code en (puisque c'est une définition récursive primitive cf plus loin ): Java



RECURSION - Department of Computer Science

At runtime Java maintains a stack that contains frames for all method calls that are being executed but have not completed Start of method call: push a frame for call on stack Use the frame for the call to reference local variables and parameters End of method call: pop its frame from the stack; if it is a function leave the



Java Recursion: Recursive Methods (With Examples) - Programiz

A recursion trace closely mirrors a programming language’s execution of the recursion InJava each timeamethod (recursive orotherwise) iscalled astructure known as anactivation recordoractivation frameis created to store information about the progress of that invocation of the method



Lecture 2: Recursion - New York University

Every recursive function consists of two parts: base casethe case for which the solution can be stated non-recursively (this is the trivial case but it is necessary for the recursion toterminate) recursive casethe case for which the solution is expressed in terms of a smaller version of itself

What is a recursive method in Java?

In Java, a method that calls itself is known as a recursive method. And, this process is known as recursion. A physical world example would be to place two parallel mirrors facing each other. Any object in between them would be reflected recursively. How Recursion works?

Can recursive functions run into infinite recursion?

Just as loops can run into the problem of infinite looping, recursive functions can run into the problem of infinite recursion. Infinite recursion is when the function never stops calling itself. Every recursive function should have a halting condition, which is the condition where the function stops calling itself.

What are some examples of recursive algorithms?

Simple recursive algorithms1. Fibonacci numbers2. Dicothomic search3. X-Expansion4. Proposed exercises3. Recursive vs Iterative strategies4. More complex examples of recursive algorithms1. KnightsTour2. Proposed exercisesA.A. 2012/2013Tecniche di programmazione2 3. Definition and divide-and-conquerstrategiesRecursion 4.

How is repetition achieved in a recursive method?

Repetition is achieved through repeated recursive invocations of the method. The process is ?nite because each time the method is invoked, its argument is smaller by one, and when a base case is reached, no further recursive calls are made. We illustrate the execution of a recursive method using arecursion trace.

Chapitre 8Structures de données récursives8.1 Introduction

La récursivité ne concerne pas seulement les traitements (les méthodes) mais également la repré-

sentation des données (classes). Dans une méthode récursive, il y a un appel à cet méthode. Dans une

classe récursive, il y a une variable (ou plusieurs) dont le type est la classe elle-même.

8.2 Classe récursive

On appelle classe récursive une classe dans laquelle une ou plusieurs variables d"instance ont

pour type le nom de la classe. C"est-à-dire qu"un objet instance de cette classe a des variables qui

contiennent d"autres instances de la classe.

Prenons un premier exemple : celui d"une structure hiérarchique de type militaire où chaque indi-

vidu a un supérieur hiérarchique unique. classMilitaire{

String nom;

String grade;

Militaire superieur;

Militaire(String n, String g, Militaire s){

nom=n; grade=g; superieur=s; On voit que chaque objet de la classe Militaire contient une variable de type Militaire et que le

constructeur permettant de créer un objet instance prend enparamètre un autre objet représentant son

supérieur.

Deux questions se posent : comment créer le premier objet de la classe, alors qu"il n"existe aucun

autre objet pour être le supérieur; à la création de l"objet,comment new peut réserver une place en

mémoire assez grande pour le militaire et son chef et le chef du chef, etc?

La réponse à la première question, c"est qu"on peut créer un objet en donnant la valeurnullpour

représenter le supérieur. Cela permet de créer non seulement le premier objet, mais autant d"objets

qu"on veut et qui n"ont pas de supérieur (à leur création). 1

8.3. PARCOURS D"UNE STRUCTURE RÉCURSIVECHAPITRE 8. STRUCTURES DE DONNÉES RÉCURSIVES

La réponse à la seconde question, c"est que le new ne réserve de place en mémoire que pour le

nouvel objet. Son supérieur (si ce n"est pas null) existe déjà dans la mémoire au moment de la création

de l"objet. Il n"y a pas à lui réserver de place. De même pour lechef du chef.

Toutlesecret delastructure récursive tient dans lemécanisme des références. Lavariablesuperieur

ne contient pas directement le supérieur mais une référence, l"adresse en mémoire du supérieur. Cette

adresse peut être null, pour représenter le cas où le militaire n"a pas de chef ou le cas où cette infor-

mation sur son supérieur n"a pas encore été mise à jour.

Une structure récursive contient une ou plusieurs variables du même type qu"elle-même, comme

une méthode récursive contient un ou plusieurs appels à elle-même. Voyons un programme qui utilise cette classe pour construire effectivement une structure. classTestMili{ public static voidmain(String[] args){

Militaire sol, lieu, col;

Ce pogramme construit une structure comportant trois objets de typeMilitairereliés entre

eux. On peut la représenter comme suit (pour simplifier le dessin, on ne sépare pas la pile du tas).

Militaire

nom: Chabert grade: colonel

Militaire

nom: Chapuis grade: lieutenant superieur: superieur: nullsol lieu colMilitaire superieur: grade: soldatnom: Martin

8.3 Parcours d"une structure récursive

Dans notre premier exemple de structure, il y a une variable par objet créé. Mais généralement, ce

n"est pas la cas, on a seulement une variable sur le premier élément de la structure et on peut atteindre

les autres éléments via un chemin d"accès traversant plusieurs objets. Voyons un exemple concret de programme et de structure où il ya une seule variable qui contient le premier objet de la structure. classTestMili2{ public static voidmain(String[] args){

Militaire premierMili;

La structure construite peut se représenter comme suit.

2NFA032c?CNAM 2012

CHAPITRE 8. STRUCTURES DE DONNÉES RÉCURSIVES8.3. PARCOURS D"UNE STRUCTURE RÉCURSIVE

Militaire

nom: Chabert grade: colonel

Militaire

nom: Chapuis grade: lieutenant superieur: superieur: nullMilitaire superieur: grade: soldatnom: Martin premierMili Dans cette structure, on peut accéder au premier objet par lecheminpremierMili, au second objet parpremierMili.superieuretautroisième objet parlecheminpremierMili.superieur.superieu

Une structure récursive contient indirectement, via des chaînes de références, plusieurs objets

du même type. Beaucoup d"opérations courantes nécessitentde parcourir la structure pour accéder à

certains ou à tous les objets de la structure. Ces opérationsdoivent fonctionner quel que soit le nombre

d"objet dans la structure.

Voici quelques exemples classiques :

- compter le nombre d"objets dans la structure (accès à tous les objets). Par exemple : compter le

nombre de supérieurs au-dessus d"un militaire donné.

- rechercher si un objet appartient àla structure. Parexemple :untel est-il lechef direct ou indirect

d"un militaire donné. - appeler une méthode sur tous les objets de la structure.

Lacaractéristique du parcours dans la structure est qu"on ne peut pas accéder directement à chaque

élément : il faut passer par des éléments intermédiaires. Par exemple, on ne peut pas accéder directe-

ment au chef du chef d"un soldat : on est obligé de passer par lechef du soldat et de regarder quel est

son chef.

Pour illustrer les opérations de parcours, nous allons prendre un autre exemple : celui d"un train

qui passe dans plusieurs gares. A chaque gare, il y a une heurede passage du train et une référence à

la gare suivante. On va utiliser deux classes : une pour le train et une pour les arrêts. classHeure{ private intminutes, heures; publicHeure(inth,intm)throwsPasHeure{ if(h<0 || h>23 || m<0 || m>59) throw newPasHeure(); heures=h; minutes=m; publicString toString(){ return""+heures+":"+minutes; classArret{ privateString nomGare; privateHeure heure; privateArret arretSuivant; publicArret(String n, Heure h, Arret as){ nomGare=n; heure=h; arretSuivant=as; publicString toString(){ returnnomGare + " " + heure.toString(); publicArret getArretSuivant(){ returnarretSuivant;

NFA032

c?CNAM 20123

8.3. PARCOURS D"UNE STRUCTURE RÉCURSIVECHAPITRE 8. STRUCTURES DE DONNÉES RÉCURSIVES

publicString getNomGare(){ returnnomGare; publicHeure getHeure(){ returnheure; public classTrain{ private intnumero; privateArret premierArret; publicTrain(intn, Arret a){ numero=n; premierArret=a; public static voidmain(String[] args)throwsPasHeure{

Arret a1, a2, a3, a4;

Train t;

t=newTrain(4652,a4);

Le train créé dans la méthode main est représenté dans la mémoire de l"ordinateur par cinq objets :

un de type train et quatre de type Arret, un pour chaque arrêt du train. Chaque arrêt contient dans la

variable arretSuivant une référence à la gare suivante du parcours. On peut représenter de la façon suivante les objets en mémoire. Arret arretSuivant: heure Arret arretSuivant: heurenomGare:Moutiers-Salins Heure heures.13: minutes: 12 Train numero: 4652 premierArret:Arret arretSuivant: heurenomGare:Albertville Arret nomGare:Chambéry heure Heure heures:14 minutes: 29HeureHeurenomGare:Bourg-Saint-Maurice heures: 12 minutes: 32heures: 13 minutes: 40 arretSuivant: null Commeexemple de parcours de cette structure, prenons une méthode d"affichage des informations

sur le train. Cette méthode doit parcourir tous les arrêts successif et pour chaque arrêt, afficher le nom

de la gare et l"heure. Voici comment cela va s"écrire sous la forme d"une méthode de la classe Train.

voidafficher(){

Terminal.ecrireStringln("Train

numero" + numero);

Arret a = premierArret;

while(a!=null){

4NFA032c?CNAM 2012

CHAPITRE 8. STRUCTURES DE DONNÉES RÉCURSIVES8.3. PARCOURS D"UNE STRUCTURE RÉCURSIVE

Terminal.ecrireStringln(a.toString());

a=a.getArretSuivant();

Au premier tour de boucle, la variable a contient l"adresse du premier arrêt. Puis, dans la boucle,

on lui affecte la valeur du suivant, c"est-à-dire l"adressedu deuxième arrêt. Et ainsi de suite, jusqu"à

la fin. La fin, c"est quand l"arrêt suivant que l"on a affecté à la variableavautnull. Si l"on ajoute à la fin de la méthode main l"instructiont.afficher();,cela produit l"affichage suivant : > java Train

Train numero 4652

Bourg-Saint-Maurice 12:32

Moutiers-Salins 13:12

Albertville 13:40

Chambery 14:29

Prenons un autre exemple de parcours de tous les éléments de typeArret: la méthode qui calcule

le nombre de gares où passe un train. C"est encore une méthodede la classe Train. public intnombreDeGares(){ intres=0;

Arret a = premierArret;

while(a!=null){ res++; a=a.getArretSuivant(); returnres;

Voyons un troisième exemple qui renvoie l"heure de passage d"un train à une gare donnée. C"est

encore une méthode de la classe Train. Cette fois, le parcours de la structure s"arrête dès que l"on a

trouvé l"objet de typeArretqui correspond à la gare recherchée. Le parcours est le même,mais la

condition d"arrêt est différente. publicHeure heureDePassage(String gare)throwsPassePas{

Arret a = premierArret;

while(a!=null&& !gare.equals(a.getNomGare())){ a=a.getArretSuivant(); if(a==null) throw newPassePas(); else returna.getHeure();

Un autre type de parcours consiste à modifier chaque élément de la structure et non seulement à

les consulter comme on l"a fait jusqu"ici. Nous vous proposons une méthode qui applique un retard

donné à toutes les gares du parcours. Pour cela, nous ajoutons une méthode ajouterDelai à la classe

Heure et nous écrivons la classe enregistrerRetard dans la classe Train.

NFA032

c?CNAM 20125

8.4. OPÉRATIONS DE CRÉATION DE STRUCTURES RÉCURSIVESCHAPITRE 8. STRUCTURES DE DONNÉES RÉCURSIVES

// classe Heurequotesdbs_dbs41.pdfusesText_41
[PDF] la récursivité en algorithme exercice corrigé

[PDF] leo traduction

[PDF] récursivité python exercices corrigés

[PDF] exercices récursivité python

[PDF] récursivité algorithme exercice corrigé

[PDF] écrire un discours en allemand

[PDF] variable réelle définition économie

[PDF] carte shom pdf

[PDF] instructions nautiques pdf

[PDF] carte marine shom gratuite

[PDF] document sur le système de balisage

[PDF] carte marine méditerranée gratuite

[PDF] les fondements de l'idéologie nazie

[PDF] idéologie nazie définition

[PDF] jeunesses hitlériennes filles