Exercice 2 - Récursivité · Bac Numérique et Sciences Informatiques Métropole 1 remplacement 2022

Thème : Récursivité · Tiré du sujet Métropole France 1 remplacement (2022)

Énoncé

Cet exercice aborde les notions de classes, itération et récursivité.

Une petite société immobilière ne voulant pas investir dans une base de données nécessitant une mise en place longue et fastidieuse a créé un fichier.csv pour stocker ses annonces. La consultation et la mise à jour de ce fichier ne seront pas étudiées ici. Pour limiter notre étude, nous considérerons que les données sont stockées temporairement dans une liste v dont voici la structure simplifiée:

# pieces

class Piece:

def __init__(self, a, b):

self.nom = a # nom

self.sup = b #superficie de la piece

def sup(self):

return self.sup

#villas

class Villa:

def __init__(self, a, b, c, d, e):

self.nom = a # nom de la villa

self.sejour = b # caracteristiques sejour

self.ch1 = c # caracteristiques de la 1ere chambre

self.ch2 = d # caracteristiques de la 2eme chambre

self.eqCuis = e # equipement de la cuisine "eq" ou "noneq"

def nom(self):

return self.nom

def surface(self):

return......

def equip(self):

return self.eqCuis

# Programme principal

v=[]

v.append( Villa("Les quatre vents", Piece("séjour",40), Piece("ch1",10), Piece("ch2",20),"eq"))

v.append( Villa("Les goélands", Piece("séjour",50), Piece("ch1",15), Piece("ch2",15), "eq"))

v.append( Villa("Rêve d'été", Piece("séjour",30), Piece("ch1",15), Piece("ch2",20), "non eq"))

v.append( Villa("Les oliviers", Piece("séjour",30), Piece("ch1",10), Piece("ch2",20), "eq"))

v.append( Villa("Bellevue", Piece("séjour",30), Piece("ch1",10), Piece("ch2",20), "non eq")) La structure de données retenue pour l'exercice est définie par la classe Villa.

Partie B: Récursivité

L'agent immobilier veut répondre, à une demande d'un client: « Quelle est votre villa la plus grande ? » Pour cela, il souhaite disposer d'une fonction max_surface() qui va extraire de la liste v, la villa désirée. Nous avons décidé d'écrire cette fonction de façon récursive.

3.

Recopiez parmi les propositions suivantes celle qui caractérise un appel récursif.

4.

L'algorithme suivant a été choisi:

Il faut partir d'une liste de villas:

si cette liste contient un seul élément, c'est le résultat;

si la liste en contient plusieurs, il faut analyser les deux premiers éléments, éliminer la villa de plus petite surface, et recommencer avec la liste tronquée.

À la fin du processus, une seule villa est renvoyée.

Pour écrire cette fonction, dans un premier temps, nous allons donc distinguer deux cas:

celui où la liste des villas ne contient qu'une villa:

il faut renvoyer la villa

celui où la liste en contient au moins deux:

si la surface de la villa v[0] est inférieure à celle de la villa v[1]

il faut supprimer v[0] de la liste

sinon

il faut supprimer v[1] de la liste.

Écrivez sur votre copie le code de cette fonction en Python.

def max_surface(v):

Énoncé: Exercice 2 - Récursivité · Bac Numérique et Sciences Informatiques Métropole 1 remplacement 2022

Corrigé

Corrigé proposé par AprenAI (non officiel)

3. Recopiez parmi les propositions suivantes celle qui caractérise un appel récursif.

Réponse : appel d'une fonction par elle-même.

La réponse de la question restante et l’explication pas à pas sont réservées aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

‹ Exercice 2 - Partie C · Métropole 2024 (sujet 2) · Exercice 5 - Question 4 · Métropole 2 remplacement 2022 ›

Plus d’exercices de Récursivité