public class test {
public static void main(String[] args) throws Exception {
int sum = 0;
for(int i=1;i<=20;i++){
int temp = 1;
for(int j=1;j<=i;j++){
temp*=j;
}
sum+=temp;
}
System.out.println("1-20阶乘的和为:"+sum);
}
}
答案补充:上面算法只适合于阶乘合并不是很大的情况 如果合超过int变量所能表达的值 就要用BigDecimal变量了~
例如上面程序计算1-21的阶乘和会是-927073767 导致错误
程序如下修改以后 答案就正确了53652269665821260313
非常感谢老大提醒~~~
public class T {
public static void main(String[] args) {
test2(20);
}
public static void test2(int k) {
BigDecimal total = new BigDecimal("0");
BigDecimal current = new BigDecimal("1");
for (int i = 1; i <= k; i++) {
current = current.multiply(new BigDecimal(String.valueOf(i)));
total = total.add(current);
}
System.out.println(total);
}
}
参考资料:http://www.java2000.net/p10869