Exercice 1 · Bac Numérique et Sciences Informatiques Polynésie 2026 (jour 1)
Thème : Programmation dynamique · Tiré du sujet Jour 1 (2026)
Énoncé
Cet exercice porte sur la notion de complexité.
On définit une suite d'entiers de la façon suivante:
Les premières valeurs de cette suite sont donc les suivantes: , , , , , .
On donne la fonction suivante permettant de calculer les termes de cette suite:
1.
Compléter la fonction récursive suite qui prend en paramètre un entier et renvoie la valeur de .
def suite(n):
if n < 2:
valeur =...
else:
valeur = suite(n - 1) + suite(...)
return...
On appelle la fonction donnant le nombre d'additions à effectuer pour calculer le terme d'indice de la suite avec la fonction proposée ci-dessus. On peut montrer que cette fonction est la suivante:
2.
Écrire une fonction nb_additions_suite prenant en paramètre un entier et renvoyant la valeur de où est la fonction définie ci-dessus.
def nb_additions_suite(n):
3.
Calculer les valeurs , et .
On propose une nouvelle fonction pour calculer les termes de la suite :
def suite2(n, valeurs_calculees = [0, 1]):
if n < len(valeurs_calculees):
valeur = valeurs_calculees[n]
else:
valeurs_calculees.append(suite2(n - 1, valeurs_calculees)
+ suite2(n - 2, valeurs_calculees))
return valeurs_calculees[n]
4.
Recopier et compléter le tableau ci-dessous avec le nombre d'additions effectuées par la fonction suite2 pour les calculs des premiers termes de la suite .
complexité de suite2
n
nombre d'additions
2
1
3
2
4
3
5
6
7
On appelle la fonction donnant le nombre d'additions à effectuer pour calculer le terme d'indice de la suite avec la fonction suite2.
5.
Expliquer pourquoi suite2 est plus efficace que suite et donner le nom du procédé algorithmique utilisé pour obtenir cette efficacité.
6.
Proposer une version itérative, non récursive, suite3 du calcul des termes de la suite .
def suite3(n):
7.
Expliquer pourquoi la version itérative est préférable à la version récursive pour obtenir un terme quelconque de la suite de .

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Compléter la fonction récursive suite qui prend en paramètre un entier n et renvoie la valeur de Un.
Réponse : ```python if n < 2: valeur = n else: valeur = suite(n - 1) + suite(n - 2) return valeur ```
2. Écrire une fonction nb_additions_suite prenant en paramètre un entier n et renvoyant la valeur de p(n) où p est la fonction définie ci-dessus.
Réponse : ```python if n < 2: return 0 else: return 1 + nb_additions_suite(n - 1) + nb_additions_suite(n - 2) ```
3. Calculer la valeur p(2).
Réponse : 1
3. Calculer la valeur p(4).
Réponse : 4
3. Calculer la valeur p(7).
Réponse : 20
4. Nombre d'additions pour n = 5 dans suite2.
Réponse : 4
Les réponses des 6 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.