100!早就越界了,请重写*函数,或者用BigDecimal
答案是:
57517305542908482443291926499190166227553950162851970107817358395459163260285385283634078442004445924402950063914525591757675555365035301369172896507272248089683538191684336259229596381677920024498237764406115194360160319429191951445917696000000000000000000000000
参考:
static BigDecimal[] array = new BigDecimal[151];
static{
for(int i = 0; i < array.length; i++)
{
array[i] = BigDecimal.ONE;
}
}
static BigDecimal factorial(int n)
{
if(n <= 0)
{
throw new IllegalArgumentException("arg mistake");
}
if(n > 1)
{
if(array[n].equals(BigDecimal.ONE))
{
array[n] = factorial(n - 1).multiply(new BigDecimal(n));
}
}
return array[n];
}
BigDecimal total = BigDecimal.ZERO;
for(int i = 100; i <= 150; i++)
{
total = total.add(factorial(i));
}
System.out.println(total.toPlainString());
public int sum(int m,int n){
int sum1=0;
for(int j=m;j<=n;j++){
sun1+=jiecheng(j);
return sum1;
}
}
public int jiecheng(int j){
if(j==1)return j;
else return j*jiecheng(j-1);}
将m=100和n=150传入方法sum即可