Programme Factoriel Java


Je veux faire un programme factoriel en java en utilisant une boucle for. Par exemple, je veux prendre l'entrée utilisateur, disons 10, puis multiplier 10*9*8*7*6*5*4*3*2*1. J'ai besoin d'aide pour construire la boucle for. Le code ci-dessous est tout ce que j'ai pour autant que je ne sais pas où aller après.

import java.util.Scanner;
import java.lang.Math;
public class factorial {

    public static void main(String[] args) {
        int num;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a number: ");
        num = input.nextInt();
    }
}
Author: eebbesen, 2014-01-31

6 answers

Essayer

public static void main(String[] args) {
    int num;
    int fact=1;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number: ");
    num = input.nextInt();
    for (int i=2;i<=num; i++){
        fact=fact*i;
    }

    System.out.println("Factorial: "+fact);
}

Comme @Marko Topolnik mentionné dans les commentaires, ce code fonctionnera pour les entrées jusqu'à 12. Pour les entrées plus grandes, l'infini sera produit en raison du débordement.

Pour les nombres supérieurs à 12, vous devez utiliser un type de données plus élevé comme BigInteger

, Vous pouvez essayer:

public static void main(String[] args) {
    BigInteger num;
    BigInteger fact = BigInteger.valueOf(1);
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number: ");
    num = input.nextBigInteger();
    for (int i = 2; i <= num; i++){
        fact = fact.multiply(BigInteger.valueOf(i));
    }
    System.out.println(fact);
}
 3
Author: laaposto, 2016-12-05 09:04:16

Codage par fonction récursive:

import java.util.Scanner;

public class Main {

     public static void main(String[] args)
     {
         System.out.print("Enter a number: ");
         Scanner input = new Scanner(System.in);
         int num = input.nextInt();
         long factorialResult = factorialRecursive(num);
         System.out.println(factorialResult);
     }


     public static long factorialRecursive(int n) {
         if (n == 0 || n == 1 )
             return 1;

         return n * factorialRecursive(n - 1);
     }
}

Source: learn.uncox.com

Si le nombre est grand, "stackoverflow" se produit.

 4
Author: gadolf, 2016-12-07 07:42:47

Pourquoi s'embêter à le calculer?

public int factorial ( int n ) {
switch(n){
case 0: return 1;
case 1: return 1;
case 2: return 2;
case 3: return 6;
case 4: return 24;
case 5: return 120;
case 6: return 720;
case 7: return 5040;
case 8: return 40320;
case 9: return 362880;
case 10: return 3628800;
case 11: return 39916800;
case 12: return 479001600;
default : throw new IllegalArgumentException();
}

Source : @Emory

 3
Author: Fabinout, 2017-04-13 12:38:59

Ceci est mon programme

class FactorialUsingFor
{
    public static void main(String arg[])
    {
        int factorial = 1;
        int number = 6;

        for(int i = 1; i <= number; i++)
        {
            factorial *= i;
        }

        System.out.println("Factorial of number " + number + " is " + factorial);

    }
}
 1
Author: Merit Campus, 2016-01-04 10:40:11
int sum = 1;

for (int i = 2;i <= num;i++) {
    sum = sum * i;
}
 0
Author: Craig Manson, 2014-01-31 14:51:03

Essayez ce programme:=

import java.util.*;
public class Factorials {
 public static void main(String[] args){
  Scanner sc=new Scanner(System.in);
  int i,num,a,b;
  int c=1;
  System.out.println("Enter the no.= ");
  num=sc.nextInt();
  for(i=1;i<=num;i++){
   c=i*c;
  }
  System.out.println("Factorial is "+c);
 }
}
 0
Author: Siddhesh Urkude, 2015-04-14 18:42:40