import java.math.BigInteger;
import java.util.*;
public class Main{
protected static ArrayList table = new ArrayList();
static
{
table.add(BigInteger.valueOf(1));
}
public static synchronized BigInteger factorial(int x)
{
for (int size = table.size(); size <= x; size++)
{
BigInteger lastfact = (BigInteger) table.get(size - 1);
BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(size));
table.add(nextfact);
}
return (BigInteger) table.get(x);
}
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
int n=s.nextInt();
System.out.print(factorial(n));
}
}
請問這些都是什麼意思……新人不是很理解。謝謝!
multiply 是乘運算
table 是關鍵,先求 table 有幾個元素,然後加 1.例如: table 初始化只有一個元素,數值為 1. 一次運行: table 只有一個元素,加上 1 後為 2;初始化數值與 2 做乘法。二次運行: table 有兩個元素,加 1 後為 3;上次乘的結果,再乘 3...,依次類推完成 N 的階乘的計算。