编写一个JAVA程序,计算1!+2!+3!+...+20!之和并在屏幕上输出

2024-11-25 01:00:03
推荐回答(4个)
回答1:

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

回答2:

实现思路:就是先计算出每个数的阶乘,之后在进行求和,一直循环20次结束循环即可。
public class Sum{
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("结果为:"+sum);
}
}

回答3:

楼上的两位回答已经很好了:
换个方式写下:
public class Test {

private int getNum(int n){//获得n的阶乘
if(n<=1){
return 1;
}
return getNum(n-1)*n;
}

private int getSum(int n){//获得1!-n!的和
if(n<=1){
return 1;
}
return (getSum(n-1)+this.getNum(n));
}

public static void main(String[] args) {
Test t=new Test();
int n=20;
int sum=t.getSum(n);
int num=t.getNum(n);
System.out.println("n!:"+num);
System.out.println("sum:"+sum);
}
}

回答4:

其实很简单 你只需写出一个阶乘的代码
阶乘英文 忘记了 用中文代替,
public int jiecheng(int n)
{int result=1;
if(n<=0)
{
return 0;
}

while(n>0)
{result=result*n;
}
return result;
}

要算出1-20的阶乘只需
for(int i=0;i<20;i++)
{
int result=0;
result+=jiecheng(i);
}
最后输出result就行了
这是我现写的代码,可能有问题但决不会太大,用用看