Exercice n°32 (pages 81 et 251) de l'ouvrage C++ par la pratique.

Pour calculer n! (factorielle n), on peut utiliser deux formules différentes :

  1. La formule itérative :
    n! = 1 * 2 * 3 * ... * n
  2. La formule récursive définissant n! en fonction de (n-1)! :
    0! (factorielle de zéro) = 1
    pour tout entier n>0, n! = n * (n-1)!

Dans un fichier C++, implémentez la fonction :
unsigned int factorielleIterative(unsigned int n)
qui calcule n! en faisant le produit des n premiers entiers à l'aide d'une boucle for.

Dans le même fichier, implémentez la fonction:
unsigned int factorielleRecursive(unsigned int n)
qui calcule n! en utilisant cette deuxième formule. Cette fonction doit donc faire appel à elle-même pour calculer (n-1)!, sauf si n vaut 0, auquel cas elle devra retourner 1.

[Remarque : Le corps de la fonction tient en 4 lignes]

En réutilisant la fonction demander_nombre() déjà utilisée plusieurs fois dans les séries précédentes, écrivez, dans la fonction main(), le programme qui demande à l'utilisateur d'entrer un entier naturel n (entre 0 et 12 si vous utilisez des int ou des long int et entre 0 et 20 si vous utilisez des long long int), et affiche n! en faisant une première fois appel à factorielleIterative(), puis dans un second temps à factorielleRecursive().

Pour terminer, on pourra ajouter une boucle demandant à l'utilisateur s'il souhaite recommencer.

Exemple de déroulement

Entrez un nombre entier compris entre 0 et 12 : 12
Méthode itérative :
    12! = 479001600
Méthode récursive :
    12! = 479001600
Voulez-vous recommencer [o/n] ? o
Entrez un nombre entier compris entre 0 et 12 : 6
Méthode itérative :
    6! = 720
Méthode récursive :
    6! = 720
Voulez-vous recommencer [o/n] ? n
Last modified: Thursday, 13 October 2022, 16:03