Exercice supplémentaire C++ (lien ICC) : factorielle récursive [version HTML]
Pour calculer n! (factorielle n), on peut utiliser deux formules différentes :
-
La formule itérative :
n! = 1 * 2 * 3 * ... * n -
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