Exercice factorielle sur la récursivité JAVA

 But:

 Calcul récursif et itératif de la factorielle de n.  

Thème:

Récursivité

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

  1. La formule itérative :
n! = 1 * 2 * 3 * ... * n
  1. 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 le fichier Factorielle.java, définissez deux méthodes factorielleRecursive et factorielleIterative implémentant les deux méthodes de calcul décrites précédemment. La calcul devra se faire sur des entiers compris entre 0 et 12 introduits par l'utilisateur. Une méthode demanderNombre redemandera le nombre à l'utilisateur tant que celui-ci ne sera pas compris dans l'intervalle souhaité.

Implémentez ensuite la méthode main qui demandera un nombre à l'utilisateur et calculera la factorielle de ce nombre des deux manière possibles.

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

Exemple de déroulement

Entrez un nombre entier compris entre 0 et 12 : 12Méthode itérative : 12! = 479001600Méthode récursive : 12! = 479001600Voulez-vous recommencer [o/n] ? oEntrez un nombre entier compris entre 0 et 12 : 6Méthode itérative : 6! = 720Méthode récursive : 6! = 720Voulez-vous recommencer [o/n] ? n
But:
  Calcul récursif et itératif de la factorielle de n.    
Thème:
  Récursivité

Factorielle.java

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import java.util.Scanner;class Factorielle { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { char recommencer = 'o'; do { int n = demanderNombre(); System.out.println("Méthode itérative :"); System.out.println(n + "! = " + factorielleIterative(n)); System.out.println("Méthode recursive :"); System.out.println(n + "! = " + factorielleRecursive(n)); System.out.println("Voulez-vous recommencer [o/n] ?"); recommencer = scanner.next().charAt(0); } while (recommencer == 'o'); } /**  * Demande un entier à l'utilisateur  * @return L'entier entré par l'utilisateur  */ static int demanderNombre() { int n; do { System.out.println("Donnez un nombre entier compris entre 0 et 12 (compris)"); n = scanner.nextInt(); } while ((n > 12) || (n 0)); return n; } /**  * Calcul de la factorielle par la méthode itérative  * @param nombre Le nombre dont on veut calculer la factorielle  * @return nombre!  */ static int factorielleIterative(int nombre) { int fact = 1; for (int i = 2; i nombre; i++) { fact *= i; } return fact; } /**  * Calcul de la factorielle par la méthode récursive  * @param nombre Le nombre dont on veut calculer la factorielle  * @return nombre!  */ static int factorielleRecursive(int nombre) { if (nombre == 0) { return 1; } else { return (nombre * factorielleRecursive(nombre - 1)); } }}
Article publié le 17 Août 2010 Mise à jour le Lundi, 31 Août 2020 11:15 par Salim KHALIL