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;
}
}