Bonjour ,
j ' ai assez galéré pour écrire la méthode récursive permettant le calcul d' une factorielle.
Cependant je comprends bien l ' empilage (je sais pas si ça se dit) mais j ' ai du mal à comprendre comment se réaliser le désempilage.
J' ai mis la méthode dans une classe à part .
Procédure main (appel de la méthode)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class Utilitaires { 1-public static long facrec (long n ){ 2- long resultat ; 3- System.out.println ("*** Entree dans factrec : n = " + n ); 4- if ( n <= 1){ 5- resultat = 1; 6- }else { 7- System.out.print("n = " + n); 8- resultat = facrec (n-1) * n ; 9- } 10- System.out.println ("***Sortie de facrec : resultat = " + resultat + " n = "+ n); 11- return resultat; 12- }//fin methode }
Questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class TestFacrec2 { public static void main (String [] args){ int nombre; System.out.print( " Saisir un nombre entier positif ou nul : "); nombre = Lire.entierInt(); System.out.print( " Sa factorielle est : " + Utilitaires.facrec(nombre)); } }
1-En fait j ' aimerai bien comprendre le fonctionnement , comment se réalise le désempilement (ou age ).
2 -en l exécutant , je suis assez étonné de constater que l ' instruction de la ligne 10 est exécutée plusieurs fois , je ne comprends pas comment ceci se produit.
3-En rentrant un nombre négatif , le résultat est de 1 , je suis assez nul en math mais la factorielle d ' un nombre négatif ce n ' est pas possible
Merci , j éspère avoir été clair .
Partager