1.没有进行可能的异常处理
2.虽然递归代码简洁不少,但是效率会很低。所以求min的阶乘,以及min到max之间所有数的阶乘,全部用循环实现
3.TODO 由于数据量较小,所以直接算了。如果数据量大(超过10W级)可以考虑利用多线程,以及线程池的优势
2.虽然递归代码简洁不少,但是效率会很低。所以求min的阶乘,以及min到max之间所有数的阶乘,全部用循环实现
3.TODO 由于数据量较小,所以直接算了。如果数据量大(超过10W级)可以考虑利用多线程,以及线程池的优势
package test2;
import java.math.BigInteger;
public class Example_5 {
public static void main(String args[])
{
Example_5 example = new Example_5();
System.out.println(example.sumFactorial(100, 200));
}
public Example_5(){}
public BigInteger sumFactorial(int min,int max)
{
BigInteger ftl = factorial(min);
BigInteger sum = ftl ;
if(min<max)
{
for(int i =min+1;i<=max; i++)
{
ftl = ftl.multiply(BigInteger.valueOf(i));
sum = sum.add(ftl);
}
}
return sum;
}
public BigInteger factorial(int min)
{
BigInteger ans = BigInteger.ONE;
for(int i = 1; i <= min; ++i)
ans = ans.multiply(BigInteger.valueOf(i));
return ans;
}
}