Récursivité et diviser pour régner

Cas de base, récurrence

Se connecter pour contribuerPublié le · Dernière mise à jour le

Récursivité et diviser pour régner

Définition

Une fonction est récursive quand elle s'appelle elle-même. Toute fonction récursive doit comporter :

  1. un ou plusieurs cas de base (sans appel récursif),
  2. un cas récursif qui se ramène à un sous-problème plus petit,
  3. une garantie de terminaison (un paramètre strictement décroissant vers le cas de base).
def factorielle(n):
    if n <= 1:         # cas de base
        return 1
    return n * factorielle(n - 1)  # cas récursif

Pile d'exécution

Chaque appel empile une frame (variables locales, point de retour). La récursivité non terminale a un coût mémoire en O(p)O(p)pp est la profondeur des appels. Python limite la pile (≈ 1000 appels par défaut, modifiable via sys.setrecursionlimit).

Paradigme « diviser pour régner »

  1. Diviser le problème en sous-problèmes indépendants.
  2. Régner : résoudre récursivement les sous-problèmes.
  3. Combiner les solutions partielles.

Exemples typiques :

AlgorithmeDiviserCombinerComplexité
Tri fusionen deux moitiésfusion triéeO(nlogn)O(n \log n)
Tri rapideautour d'un pivotconcaténationO(nlogn)O(n \log n) moyen
Recherche dichotomiquedemi-tableauO(logn)O(\log n)
Exponentiation rapidean=(an/2)2a^n = (a^{n/2})^2carréO(logn)O(\log n)

Théorème maître (intuition)

Pour T(n)=aT(n/b)+O(nd)T(n) = a \cdot T(n/b) + O(n^d) :

  • si d>logbad > \log_b a : T(n)=O(nd)T(n) = O(n^d),
  • si d=logbad = \log_b a : T(n)=O(ndlogn)T(n) = O(n^d \log n),
  • si d<logbad < \log_b a : T(n)=O(nlogba)T(n) = O(n^{\log_b a}).

Le tri fusion vérifie a=2,b=2,d=1a=2, b=2, d=1 donc T(n)=O(nlogn)T(n) = O(n \log n).

Exponentiation rapide

def puissance(a, n):
    if n == 0: return 1
    demi = puissance(a, n // 2)
    return demi * demi * (a if n % 2 else 1)

Sources et références

Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.

  1. 1.Programmes et ressources du lycée général et technologiqueÉduscol — Ministère de l'Éducation nationale
  2. 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat)education.gouv.fr
  3. 3.Ressources et programme de NSIÉduscol
  4. 4.Documentation du langage PythonPython Software Foundation
  5. 5.Protection des données et RGPDCNIL
  6. 6.Archives et ressources documentairesArchives nationales

Contenu vérifié et mis à jour le 08/08/2026. Les liens renvoient vers les sites officiels des éditeurs cités.

Historique éditorial

Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.

  1. Dernière mise à jour du cours (relecture et enrichissement)
  2. Première publication de la fiche de cours