因子Java程序

我想使用for循环在java中做一个阶乘程序。 例如,我想取用户输入,比方说10 ,然后乘以10*9*8*7*6*5*4*3*2*1 。 我需要帮助构建for循环。 下面的代码是我所有的,因为我不知道该去哪里。

 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(); } } 

尝试

 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); } 

正如@Marko Topolnik在评论中提到的那样,此代码适用于最多12的输入。对于较大的输入,将由于溢出而输出无穷大。

对于大于12的数字,您应该使用更高的数据类型,如BigInteger

你可以试试:

 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); } 

通过递归函数编码:

 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); } } 

来源: learn.uncox.com

如果数字很大,则会发生“stackoverflow”。

为什么要费心计算呢?

 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(); } 

资料来源: @Emory

这是我的计划

 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; } 

试试这个程序:=

 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); } }