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();
}
}
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);
}
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.
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
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);
}
}
int sum = 1;
for (int i = 2;i <= num;i++) {
sum = sum * i;
}
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);
}
}