Partage
  • Partager sur Facebook
  • Partager sur Twitter

factoriel en java avec recurcivite

Sujet résolu
    25 mars 2023 à 20:08:33

    salut svp besoin d'aide sur ce code je vois pas d'erreur pourtant le compilateur javac m' en affiche, voici le code :

    package hello;
    import java.util.Scanner;
    /** Ceci est une implémentation du message traditionnel "Hello world!"
    * @author L'équipe Education d'OpenClassrooms
    */
    public class Factoriel {
        /** Le programme commence ici */
        public static void main(String[] args) {
            int n =0;
            System.out.print(" Entrer un nombre: ");
            Scanner clavier = new Scanner (System.in);
            n = clavier.nextInt();
    
        RecursionInJava.factorial(n);
    }
    
    public class RecursionInJava{
    
        public static int factorial(int n) {
            if (n == 1)
                return 1;
            else
                while(n>=1)
                    return n * factorial (n-1);
        }
    }
    
    

    C:\Users\ACER\Desktop\ROOT>javac hello/Factoriel.java

    hello\Factoriel.java:25: error: reached end of file while parsing

    }

     ^

    1 error

    C:\Users\ACER\Desktop\ROOT>

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2023 à 20:25:16

      Hello,

      Déjà ici c'est la section js (javascript) et non java :D

      Ensuite le message d'erreur est claire. Il te manque une } dans ton code.

      Ensuite, évite vraiment les conditions et boucle sans les { et }

      package hello;
      
      import java.util.Scanner;
      
      public class Factorial
      {
          public static void main(String[] args)
          {
              System.out.println("Enter a number: ");
              Scanner in = new Scanner(System.in);
              int n = in.nextInt();
              
              System.out.println("Factorial of " + n + " is " + Recursion.factorial(n));
          }
      }
      
      public class Recursion
      {
          public static int factorial(int n)
          {
              if (n == 0) {
                  return 1;
              } else {
                  return n * factorial(n - 1);
              }
          }
      }


      Normalement comme je l'ai mis, tu n'a pas besoin de la boucle.

      PS: Fais attention aussi à la présentation de ton code.

      -
      Edité par quenti77 25 mars 2023 à 20:28:37

      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2023 à 20:26:21

        Bonjour,

        Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
        Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

        Pour plus d'informations, nous vous invitons à lire les règles générales du forum

        Déplacement vers un forum plus approprié

        Le sujet est déplacé de la section Javascript vers la section Langage Java

        • Partager sur Facebook
        • Partager sur Twitter

        Pas d'aide concernant le code par MP, le forum est là pour ça :)

          26 mars 2023 à 1:56:44

          package hello;
           
          import java.util.Scanner;
           
          public class Factorial
          {
              public static void main(String[] args)
              {
                  System.out.println("Enter a number: ");
                  Scanner in = new Scanner(System.in);
                  int n = in.nextInt();
                   
                  System.out.println("Factorial of " + n + " is " + Recursion.factorial(n));
              }
          }
           
          class Recursion
          {
              public static int factorial(int n)
              {
                  if (n == 0) {
                      return 1;
                  } else {
                      return n * factorial(n - 1);
                  }
              }
          }
          merci ca marche mais avec  class Recursion

          -
          Edité par FofanaAdama4 26 mars 2023 à 3:11:34

          • Partager sur Facebook
          • Partager sur Twitter
            26 mars 2023 à 17:47:36

            Ça marcherait aussi sans. En déclarant la méthode statique dans la classe Factorial. Elle n'a pas besoin d'être publique.

            public class Factorial
            {
                public static void main(String[] args)
                {
                    System.out.println("Enter a number: ");
                    Scanner in = new Scanner(System.in);
                    int n = in.nextInt();
                      
                    System.out.format("Factorial of %d is %d\n",
            			   n, factorial(n));
                }
            	
                static int factorial(int n)
                {
                    return foo(1, n);
                }
            
                // foo(p, n) == p * factorial(n)
            
                static int foo(int p, int n) {
            	return n == 0
            		? p
            		: foo(n * p, n - 1);
                }
            }
            

            Avec en bonus

            • utilisation d'un format
            • récursion terminale avec utilisation d'une fonction auxiliaire avec une variable tampon
            • expression conditionnelle

            -
            Edité par michelbillaud 27 mars 2023 à 13:00:33

            • Partager sur Facebook
            • Partager sur Twitter

            factoriel en java avec recurcivite

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown