Exercice 2 · Bac Numérique et Sciences Informatiques Sujets zéro et spécimens sujet 2023 (sujet 2)
Thème : Récursivité · Tiré du sujet Sujet 2 (2023)
Énoncé
Cet exercice est consacré à l'analyse et à l'écriture de programmes récursifs.
1. a.
Expliquer en quelques mots ce qu'est une fonction récursive.
1. b.
On considère la fonction Python suivante:
L'appel compte_rebours(3) affiche successivement les nombres 3, 2, 1 et 0. Expliquer pourquoi le programme s'arrête après l'affichage du nombre 0.
2.
En mathématiques, la factorielle d'un entier naturel est le produit des nombres entiers strictement positifs inférieurs ou égaux à . Par convention, la factorielle de 0 est 1. Par exemple:
la factorielle de 1 est 1
la factorielle de 2 est
la factorielle de 3 est
la factorielle de 4 est ...
Recopier et compléter le programme ci-dessous afin que la fonction récursive fact renvoie la factorielle de l'entier passé en paramètre de cette fonction.
Exemple: fact(4) renvoie 24.
3.
La fonction somme_entiers_rec ci-dessous permet de calculer la somme des entiers, de 0 à l'entier naturel passé en paramètre.
Par exemple: pour , renvoie 0; pour , renvoie ; pour , renvoie .
L'instruction print(n) de la ligne 7 dans le code précédent a été insérée afin de mettre en évidence le mécanisme en œuvre au niveau des appels récursifs.
4.
Écrire en Python une fonction somme_entiers non récursive: cette fonction devra prendre en argument un entier naturel et renvoyer la somme des entiers de 0 à compris. Elle devra donc renvoyer le même résultat que la fonction somme_entiers_rec définie à la question 3.
Exemple: somme_entiers(4) renvoie 10.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. a. Expliquer en quelques mots ce qu'est une fonction récursive.
Réponse : Une fonction récursive est une fonction qui s'appelle elle-même.
1. b. Expliquer pourquoi le programme s'arrête après l'affichage du nombre 0.
Réponse : Après l'affichage de 0, la fonction appelle compte_rebours(-1). Comme la condition -1 >= 0 est fausse, le corps du if n'est pas exécuté et la fonction se termine sans nouvel appel récursif.
2. Compléter la ligne 5 de la fonction fact (cas de base) : return ...
Réponse : 1
2. Compléter la ligne 7 de la fonction fact (cas général) : return ...
Réponse : n * fact(n - 1)
Les réponses des 3 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é.