当数比较大的时候,int,long这些基本数据类型的范围就不够了

因此计算阶乘是就好使用BigInteger类。


import java.util.ArrayList;
 import java.util.Scanner; 

 import java.math.BigInteger; 



 public class Fact { 

public static void main(String[] args) { 

System.out.print("你要计算的阶乘:"); 

Scanner input = new Scanner(System.in); 

int N = input.nextInt(); 

input.close(); 

System.out.println(N + "的阶乘为:"+ bigNumber(N));// 调用bigNumber 

} 



public static BigInteger bigNumber(int num) {// 利用BigInteger类计算阶乘 



ArrayList<BigInteger> list = new ArrayList<>();// 创建集合数组 

list.add(BigInteger.valueOf(1));// 往数组里添加一个数值 

for (int i = list.size(); i <= num; i++) { 

BigInteger lastfact = list.get(i - 1);// 获得第一个元素 

BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(i));// 获得下一个数组 

list.add(nextfact); 

} 

return list.get(num);// 返回数组中的下标为num的值 

} 

 }