• Aucun résultat trouvé

Fonctions récursives (1) – TP

N/A
N/A
Protected

Academic year: 2022

Partager "Fonctions récursives (1) – TP"

Copied!
3
0
0

Texte intégral

(1)

FONCTIONS RÉCURSIVES(1) TP

Fonctions récursives (1) – TP

11

Définition 11.1 – Fonction récursive Une fonction est diterécursivesi elle s’appelle elle-même.

Une fonction récursive doit contenir une ou des conditions d’arrêt afin d’assurer que le programme s’arrête.

Python – Version itérative

1 def factorielleIter(n):

2 res = 1 # Initialisation

3 for i in range(n):

4 res = res * (i+1)

5 return res

Python – Version récursive

1 def factorielleRec(n):

2 if n == 0: # Condition d'arrêt

3 return 1

4 else :

5 p = factorielleRec(n-1)

6 return n * p

Exemple 11.1 Factorielle

Exercice 11.1

1. Sur feuille, calculer 5 ! en utilisant les deux fonctions et expliquer la contrainte qu’impose l’utilisation d’une fonction récursive.

2. Calculer 1000 ! avec les deux méthodes. Conclure.

Exercice 11.2

Écrire une fonction récursive qui affiche un compte à rebours. Le dernier message affiché sera :"Bonne année

!".

G. BOUTARD 1 Lycée GAY-LUSSAC

(2)

TP FONCTIONS RÉCURSIVES(1)

Exercice 11.3 – Recherche dichotomique

1. Rappeler le principe général de la recherche dichotomique d’un élément dans une liste.

2. Compléter le programme suivant.

Python

1 def auxiliaire(L,x,g,d):

2 """

3 Entrée : L (liste), x (valeur), g et d des entiers

4 Sortie : Booléen

5 La fonction renvoie True si la valeur x est dans la liste L[g:d+1]

6 et False sinon

7 """

8 if L==[]:

9 return ... # A compléter

10 elif d < g:

11 return ... # A compléter

12 else:

13 m = (d+g)//2

14 if L[m] == x:

15 return ... # A compléter

16 elif x < L[m]:

17 return auxiliaire(L,x,...,...) # A compléter

18 else:

19 return auxiliaire(L,x,...,...) # A compléter

20

21 def rechercheDichotomie(L,x):

22 g,d = ... # A compléter

23 return auxiliaire(L,x,g,d)

3. Expliquer l’intérêt de la fonction auxiliaire.

Les fonctions récursives, même si elles peuvent être gourmandes en espace mémoire, permettent cependant de résoudre certains problèmes de façon très simples, contrairement à une méthode itérative. C’est notamment le cas pour les tous de Hanoï.

Les tours de Hanoï sont un jeu de réflexion consistant à déplacer des disques de diamètres différents d’une tour de « départ » (tour 1) à une tour d’ « arrivée » (tour 3) en passant par une tour « intermédiaire » (tour 2), tout en respectant les règles suivantes :

• on ne peut déplacer plus d’un disque à la fois ;

• on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

On suppose que cette dernière règle est également respec- tée dans la configuration de départ.

Remarque 11.1 – À lire après le TP

PCSI 2021 – 2022 2 G. BOUTARD

(3)

FONCTIONS RÉCURSIVES(1) TP

Python

1 def hanoi(n,tour1,tour2,tour3):

2 # Initialisation (1 disque)

3 if n==1:

4 print('Déplacer le disque de la tour',tour1,'à la tour',tour3)

5 else:

6 # Déplacer les n-1 premiers disques de tour1 à tour2 en utilisant tour3

7 hanoi(n-1,tour1,tour3,tour2)

8 # Déplacer le dernier disque (le plus grand) de tour1 à tour3 en utilisant tour3

9 print('Déplacer le disque de la tour',tour1,'à la tour',tour3)

10 # Déplacer les n-1 premiers disques de tour2 à tour3 en utilisant tour1

11 hanoi(n-1,tour2,tour1,tour3)

12

13 # Exemple

14 hanoi(5,"A","B","C")

G. BOUTARD 3 Lycée GAY-LUSSAC

Références

Documents relatifs

Et il se lance à son tour à la poursuite de

Expliciter cette proposition : « Pour déplacer les n disques, il faudra nécessairement être dans cette situation : tous les disques sont empilés sur le socle n° B sauf le plus

2017 du chemin de fer britannique 1999 • Angel Trains International 2008 • Nouveaux actionnaires 2008 • Nouveaux actionnaires 2008 • Nouveaux actionnaires. (aujourd'hui:

[r]

1- Réaliser l’esquisse suivante (outils : Ligne et Arc par 3 points). 2-

Abdou a un champ rectangulaire dont un côté mesure 5m et l’autre 3m2. Il veut mettre du

Le problème des tours de Hanoï est un jeu de réexion qui consiste à déplacer des disques de diamètres diérents d'une tour de départ à une tour d' arrivée en passant par une tour

Ces récits viennent d’un très ancien livre : Le roman