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 nn est le produit des nombres entiers strictement positifs inférieurs ou égaux à nn. Par convention, la factorielle de 0 est 1. Par exemple:

la factorielle de 1 est 1

la factorielle de 2 est 2×1=22 \times 1 = 2

la factorielle de 3 est 3×2×1=63 \times 2 \times 1 = 6

la factorielle de 4 est 4×3×2×1=244 \times 3 \times 2 \times 1 = 24...

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 nn passé en paramètre.

Par exemple: pour n=0n = 0, renvoie 0; pour n=1n = 1, renvoie 0+1=10 + 1 = 1; pour n=4n = 4, renvoie 0+1+2+3+4=100 + 1 + 2 + 3 + 4 = 10.

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 nn et renvoyer la somme des entiers de 0 à nn 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.

Énoncé: Exercice 2 · Bac Numérique et Sciences Informatiques Sujets zéro et spécimens sujet 2023 (sujet 2)

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é.