Factorielle en utilisant la Récursivité en Java

Je suis à l'apprentissage de Java à l'aide du livre de Java: La Référence Complète.
Actuellement, je suis en train de travailler sur le thème de la Récursivité.

Veuillez Noter: Il y a des questions similaires sur stackoverflow. J'ai cherché mais je n'ai pas trouvé la solution à ma question. Je suis confondue avec la logique dans le programme suivant.

Si je lance le programme ci-dessous, il produit de bons résultats, mais je ne comprends pas la logique.

  • Je ne comprenais pas la logique dans la ligne suivante : résultat = fact(n-1) * n;
  • De mes connaissances, Si l'on fait passer la valeur de n=4, comme indiqué dans le programme ci-dessous,
  • Puis, 3 * 4 est stocké dans le résultat c'est a dire 12.
  • De nouveau, fact(n-1) est appelée. Alors n devient 3.
  • Puis le 2 * 3 est stocké dans le résultat du remplacement de la précédente 12.
  • Je pense que vous avez compris où je suis bloqué jusqu'à confusion.

  • Merci.

class Calculation
{
    int fact(int n)
    {
        int result;

       if(n==1)
         return 1;

       result = fact(n-1) * n;
       return result;
    }
}

public class Factorial
{
     public static void main(String args[])
     {
       Calculation obj_one = new Calculation();

       int a = obj_one.fact(4);
       System.out.println("The factorial of the number is : " + a);
     }
}
  • Mon conseil est avant de creuser profondément dans Java, vous devez d'abord comprendre les maths derrière la récursivité. Si vous ne l'avez pas fait, ce sera un très bon début pour vous en.wikipedia.org/wiki/Recursion
  • Espérons que cela vous rend beaucoup plus clair programmerinterview.com/index.php/recursion/...
InformationsquelleAutor user907629 | 2011-11-18