MathLvl
Question transversaleMathsNSIRécursivité et récurrence

Comment un programme peut-il énumérer toutes les façons de ranger n objets, et combien de temps cela prend-il ?

Pour ranger n objets, on choisit le premier puis on range récursivement les n − 1 autres : P(n) = n × P(n − 1), d'où n! permutations. 10 objets donnent 3 628 800 rangements, énumérés en quelques secondes ; 20 objets, environ 2,4 × 10¹⁸, demanderaient des dizaines d'années.

Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.

Pourquoi cette question : un modèle d'introduction

Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.

Pour un exercice de NSI, je devais tester tous les ordres de passage possibles de cinq élèves à un oral. J'ai écrit une fonction récursive qui les générait et j'ai obtenu 120 ordres. En essayant avec 12 élèves, l'ordinateur a mis beaucoup plus longtemps. J'ai voulu relier la structure de mon programme à la formule de la factorielle.

L'enjeu et les notions du programme

Faire coïncider un algorithme récursif et une formule de dénombrement, puis estimer son coût.

Mathématiques

  • Permutations, factorielle, principe multiplicatif (terminale)
  • Suites définies par récurrence (première)
  • Ordres de grandeur (seconde)

Numérique et sciences informatiques

  • Récursivité (terminale)
  • Listes Python, parcours (première)

Le plan de l'exposé en 9,5 min

  1. 1. Introduction

    1 min

    Une permutation de n objets est une façon de les ranger dans un ordre. Problématique : comment un programme peut-il toutes les produire sans en oublier ni en répéter, et combien y en a-t-il ?

  2. 2. Mathématiques : la récurrence de la factorielle

    3,5 min

    Pour ranger n objets, on choisit celui qui vient en premier (n choix), puis on range les n-1 restants. Si P(n) est le nombre de rangements, P(n)=n× P(n-1) et P(1)=1, donc P(n)=n!.

    Ordres de grandeur : 5!=120, 10!=3 628 800, 13!≈6,2×10⁹, 20!≈2,4×10¹⁸. La factorielle dépasse rapidement toute exponentielle de base fixe.

  3. 3. NSI : la fonction récursive

    3,5 min

    La fonction permutations(liste) : si la liste a un seul élément, renvoyer cette seule permutation. Sinon, pour chaque élément x de la liste, calculer les permutations des autres éléments et placer x devant chacune d'elles.

    La structure du programme est exactement la récurrence : la boucle « pour chaque x » fait les n choix, l'appel récursif traite les n-1 restants. Chaque permutation est produite une seule fois, car elle est déterminée par son premier élément puis par l'ordre des suivants.

    Coût : à un million de permutations par seconde, 10 objets prennent environ 3,6 s ; 13 objets environ 1,7 heure ; 20 objets environ 77 000 ans. Pour les grands n, on n'énumère plus : on cherche directement la permutation voulue, ou on se contente d'un échantillon tiré au hasard.

  4. 4. Conclusion

    1,5 min

    Un programme récursif énumère les permutations en reproduisant la récurrence P(n)=nP(n-1) : il y en a n!. Cette croissance factorielle rend l'énumération impossible au-delà d'une quinzaine d'objets. J'ouvre sur le mélange aléatoire de Fisher-Yates, qui tire une permutation uniforme en n étapes.

Ce que j'écris au tableau

Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.

P(n)=n× P(n-1), P(1)=1 ⇒ P(n)=n!
10!=3 628 800 20!≈2,4×10¹⁸ 2,4×10¹⁸/10⁶×3,16×10⁷≈77 000 ans

Conclusion : la réponse à la question

Énumérer les rangements de n objets, c'est suivre la récurrence de la factorielle. Le programme est simple, mais son coût de n! le limite aux petits ensembles.

Les questions probables du jury

Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.

Écrivez les permutations de {a, b, c}.

abc, acb, bac, bca, cab, cba : 3! = 6.

Pourquoi n'y a-t-il pas de doublon ?

Deux permutations produites diffèrent soit par leur premier élément, soit, par récurrence, par l'ordre des suivants.

Combien de façons de ranger 5 élèves sur 3 places ?

5×4×3=60 (arrangements).

Combien d'appels récursifs pour 3 éléments ?

1 appel pour 3 éléments, 3 pour 2 éléments, 6 pour 1 élément : 10 appels.

Comment tirer une permutation au hasard sans toutes les générer ?

Par l'algorithme de Fisher-Yates : on échange chaque élément avec un élément tiré au hasard parmi ceux qui restent.

Les pièges qui coûtent des points

  • Confondre permutations (n!) et combinaisons.
  • Oublier le cas de base d'une liste à un élément (ou vide).
  • Sous-estimer la croissance de n!.

Revoir les notions

Autres questions : récursivité et récurrence

Toutes les questions maths-nsi →

Préparer l'oral, pas seulement le contenu

Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.

Méthode : traiter une question de Grand oral →