Numérique et sciences informatiques (NSI) · Terminale

La récursivité

Une fonction récursive est une fonction qui s’appelle elle-même. Cette idée permet d’écrire très simplement des algorithmes qui découpent un problème en un problème plus petit de même nature : factorielle, puissance, parcours d’arbres, tri fusion… Encore faut-il savoir s’arrêter.

Une question sur ce cours ?

ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.

Séance guidée avec ULU (≈ 10 min)Diagnostic, explication, exercices adaptés et bilan.

Objectifs

  • Écrire une fonction récursive avec un ou plusieurs cas de base
  • Analyser le fonctionnement d’un programme récursif à l’aide de la pile d’appels
  • Justifier la terminaison d’une fonction récursive
  • Comparer une version récursive et une version itérative d’un même algorithme

1. Principe d’une fonction récursive

Fonction récursive : Fonction dont la définition contient un appel à elle-même. Elle comporte toujours au moins un cas de base (résultat donné directement, sans appel récursif) et un ou plusieurs appels récursifs portant sur des données « plus petites ».

La factorielle se définit par 0! = 1 et n! = n × (n − 1)! pour n ≥ 1. Cette définition mathématique se traduit directement en Python.

2. La pile d’appels

Chaque appel de fonction est mémorisé dans la pile d’appels (avec ses paramètres et ses variables locales). Un appel récursif empile un nouveau contexte ; quand un appel se termine, son contexte est dépilé et son résultat est transmis à l’appel précédent.

3. Exemples classiques

Une fonction peut aussi faire plusieurs appels récursifs. La suite de Fibonacci est définie par F0 = 0, F1 = 1 et Fn = Fn−1 + Fn−2.

4. Terminaison et comparaison avec l’itératif

Pour prouver qu’une fonction récursive termine, on montre qu’une quantité entière positive (souvent n, ou la longueur d’une liste) diminue strictement à chaque appel et que le cas de base est atteint lorsqu’elle devient minimale.

À retenir

  • Une fonction récursive s’appelle elle-même et possède au moins un cas de base.
  • Chaque appel est empilé dans la pile d’appels ; les calculs se font à la remontée.
  • La terminaison se prouve avec une quantité entière qui décroît strictement jusqu’au cas de base.
  • Une récursivité double (comme fib) peut provoquer un nombre exponentiel d’appels.
  • Toute fonction récursive peut être réécrite en itératif, et inversement.

Et maintenant, à toi !

Vérifie que tu as compris avec les exercices, puis révise avec la fiche.

À découvrir aussi