💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java 程序:查找数字的阶乘 > 原文: [https://www.programiz.com/java-programming/examples/factorial](https://www.programiz.com/java-programming/examples/factorial) #### 在此程序中,您将学习使用 Java 中的`for`和`while`循环查找数字的阶乘。 正数`n`的阶乘由下式给出: ```java factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n ``` ## 示例 1:使用`for`循环查找数字的阶乘 ```java public class Factorial { public static void main(String[] args) { int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) { // factorial = factorial * i; factorial *= i; } System.out.printf("Factorial of %d = %d", num, factorial); } } ``` 运行该程序时,输出为: ```java Factorial of 10 = 3628800 ``` 在此程序中,我们使用循环来循环遍历 1 至给定数字`num`(10)之间的所有数字,并将每个数字的乘积存储在变量`factorial`,直到`i <= num`。 我们使用了`long`而不是`int`来存储较大的阶乘结果。 但是,它仍然不足以存储较大数字(例如 100)的值。 对于不能存储在长变量中的结果,我们使用在`java.math`库中声明的`BigInteger`变量。 ## 示例 2:使用`BigInteger`查找数字的阶乘 ```java import java.math.BigInteger; public class Factorial { public static void main(String[] args) { int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) { // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); } System.out.printf("Factorial of %d = %d", num, factorial); } } ``` 运行该程序时,输出为: ```java Factorial of 30 = 265252859812191058636308480000000 ``` 在这里,我们使用`BigInteger`变量阶乘代替`long`。 由于`*`不能与`BigInteger`一起使用,因此我们将`multiply()`用于产品。 同样,应将`number`强制转换为`BigInteger`以进行乘法。 * * * 同样,我们也可以使用`while`循环来解决此问题。 ## 示例 3:使用`while`循环查找数字的阶乘 ```java public class Factorial { public static void main(String[] args) { int num = 5, i = 1; long factorial = 1; while(i <= num) { factorial *= i; i++; } System.out.printf("Factorial of %d = %d", num, factorial); } } ``` 运行该程序时,输出为: ```java Factorial of 5 = 120 ``` 在上面的程序中,与`for`循环不同,我们必须在循环体内增加`i`的值。 尽管两个程序在技术上都是正确的,但在这种情况下最好使用`for`循环。 这是因为迭代次数(最多`num`)是已知的。 访问此页面以学习*使用递归*查找数字的阶乘。