Numérique et sciences informatiques (spécialité) · TerminaleBac
Récursivité : quiz de Terminale NSI
Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur
L'essentiel
- Une fonction est récursive quand elle contient un ou plusieurs appels à elle-même.3
- Les cas de base sont les conditions d'arrêt : sans eux, le programme ne se termine pas.1
- Chaque appel doit se rapprocher d'un cas de base, par exemple en diminuant
nde 1. - Une version récursive peut être plus lente que son équivalent itératif.1
- Dans un sujet de bac de spécialité NSI décrit par Éduscol, un exercice entier noté sur 6 points porte sur la récursivité.2
Avant de commencer
Ce quiz couvre la notion de récursivité du programme de Terminale NSI : ce qui définit une fonction récursive, le rôle des cas de base, la terminaison, le suivi de l'exécution à la main, les structures de données récursives et la place de la notion à l'épreuve du bac.
Pour chaque question, essaie de répondre sans relire le cours. Si tu hésites, trace l'exécution sur papier : c'est exactement ce qu'on te demandera à l'écrit, où la calculatrice n'est de toute façon pas autorisée.2 Les explications disent chaque fois pourquoi la bonne réponse est juste et pourquoi l'erreur la plus tentante ne l'est pas.
Quiz
15 questions · correction immédiate · ton score reste sur ton appareil.
-
Une fonction est dite récursive quand elle contient des appels à elle-même.3 La boucle
whileest un autre moyen de répéter des opérations (c'est le style itératif), mais elle ne suffit pas à rendre une fonction récursive. Appeler une autre fonction n'est pas non plus de la récursivité : il faut que l'appel porte sur la fonction en cours de définition. -
Les cas de base sont aussi appelés conditions d'arrêt : ils permettent au programme de se terminer.1 Ils ne servent pas à accélérer quoi que ce soit, et ils ne comptent rien : ils renvoient simplement un résultat sans refaire d'appel récursif.
-
C'est faux. Sans cas de base, rien n'arrête la chaîne d'appels, quelle que soit la valeur de départ : les cas de base constituent la condition d'arrêt.1 Penser qu'une petite valeur suffit est tentant, mais la fonction continue de s'appeler elle-même sans jamais renvoyer de résultat direct.
-
Les appels se déroulent jusqu'à
fact(0), qui vaut 1 (cas de base), puis les résultats remontent : . Une erreur fréquente consiste à répondre 24 en s'arrêtant àfact(4), ou 5 en oubliant de multiplier à chaque remontée. -
Il manque une condition d'arrêt, par exemple
if n == 0: return 0.1 Sans elle,somme(n - 1),somme(n - 2)… s'enchaînent sans jamais s'arrêter d'eux-mêmes, comme dans une boucle infinie3 ; en Python, le programme finit par planter avec une erreurRecursionError. La deuxième réponse décrit ce que ferait la fonction corrigée, pas celle de l'énoncé. -
Les instructions
fib(0)etfib(1)sont les cas de base du programme.1fib(n - 1) + fib(n - 2)est au contraire le cas récursif : il contient deux appels qui renvoient vers la fonction. Si on le prenait pour un cas de base, on ne s'arrêterait jamais. -
Notons le nombre d'appels. On a et . Donc , et . Répondre 4 revient à compter seulement la « descente » : or
fib(n-1)etfib(n-2)sont deux branches distinctes, qui se déploient toutes les deux. -
Une définition est récursive quand elle réutilise la notion qu'elle définit.3 Ici, un arbre binaire est ou bien vide, ou bien un nœud dont les deux sous-arbres sont encore des arbres binaires, de taille plus petite. C'est ce qui permet d'écrire des fonctions récursives sur les arbres. Les autres réponses ne font jamais référence à l'arbre lui-même : elles décrivent un tableau, une liste ou un simple nœud.
-
C'est vrai : un programme récursif peut être plus lent que son équivalent itératif.1 L'idée que « récursif = plus rapide » est une confusion : la récursivité est d'abord un outil d'écriture élégant et adapté à certaines structures, pas une garantie de performance.
-
Le procédé de fonction qui s'appelle elle-même est employé pour réaliser le paradigme « diviser pour régner ».3 On découpe le problème en sous-problèmes plus petits, résolus par la même fonction. Une boucle peut parfois suffire (la recherche dichotomique s'écrit avec un
while), mais la récursivité est l'écriture la plus naturelle de ce découpage, et les cas de base restent indispensables pour arrêter la division. -
Deux algorithmes qui s'appellent l'un l'autre relèvent de la récursivité croisée, dite aussi mutuelle.3 Ce n'est pas de l'itération : chaque appel crée un nouvel appel de fonction, et non un tour de boucle.
-
On déroule :
somme_liste([4, 7, 1])=somme_liste([7, 1])=somme_liste([1])=somme_liste([]). Le cas de baseL == []renvoie 0, d'où . Répondre 11 ou 8 vient d'un élément oublié pendant le déroulé : à chaque appel, la liste perd son premier élément, qui a déjà été ajouté au total. -
Pour atteindre le cas de base
n == 0en partant d'un entier positif, il faut faire diminuern. Avecf(n - 1), la suite des valeurs atteint la condition d'arrêt.1 Les appelsf(n + 1)ouf(2 * n + 1)éloignent de 0, etf(n)répète indéfiniment la même situation : pour un entiernstrictement positif, aucune de ces versions ne se termine. -
La récursivité, comme les boucles, permet d'effectuer un nombre d'opérations déterminé par les entrées et non connu à l'avance, et permet aussi d'écrire des programmes qui ne se terminent pas.3 Elle ne garantit donc pas la terminaison : c'est au programmeur de prévoir un cas de base atteignable. Elle s'applique aussi à des listes, des chaînes de caractères ou des arbres.13
-
Le sujet décrit comporte trois exercices indépendants, et l'un d'eux, consacré à la récursivité, est noté sur 6 points ; la calculatrice n'est pas autorisée.2 Dans ce sujet, la récursivité n'est donc pas un simple détail : elle forme un exercice entier, qu'il faut savoir dérouler à la main.
Les questions qu'on se pose
Comment être sûr qu'une fonction récursive se termine ?
Vérifie deux choses. D'abord, il existe au moins un cas de base qui renvoie un résultat sans nouvel appel.1 Ensuite, chaque appel récursif travaille sur une donnée qui se rapproche de ce cas de base (un entier qui diminue, une liste plus courte). Si l'une des deux conditions manque, la fonction risque de ne jamais s'arrêter, comme une boucle infinie.3
Vaut-il mieux écrire une fonction récursive ou une boucle ?
Cela dépend du problème. Une version récursive peut être plus lente que son équivalent itératif.1 En revanche, elle s'écrit très naturellement quand la donnée est elle-même récursive, comme les listes ou les arbres.3 Au bac, on te demande surtout de comprendre et de compléter un programme récursif, quel que soit ton avis sur la meilleure écriture.
Comment dérouler à la main un programme récursif sans me perdre ?
Écris chaque appel sur une ligne en notant la valeur de ses paramètres, descends jusqu'au cas de base, puis remonte en remplaçant chaque appel par son résultat. Sur papier, c'est la méthode la plus sûre, d'autant que la calculatrice n'est pas autorisée à l'écrit.2
Sources
- Document d'accompagnement : Récursivité (PDF), Éduscol - Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
- Spécialité NSI - Numérique et Sciences Informatiques (STI Éduscol), Éduscol STI - Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
- Récursivité, Wikipédia. Consulté le 7 novembre 2026.
- Récursivité (linguistique), Wikipédia. Consulté le 7 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.