public class ad {
public static void main(String[] args) {
int j=1;double sum=0;
int i=1;
while(i<=20){
j=j*i;
sum=sum+j;
i++;
}
System.out.printf("%.2f",sum);
}
}
同学你好,两处有问题:
1、20的阶乘远大于int的最大值,所以sum类型得定义为long或者double;
2、你代码的逻辑有问题,你这里计算的是1到20阶乘的累加和,即1的阶乘 + 2的阶乘 + ... + 20的阶乘
public static void main(String[] args) {
long sum = 1;
int i = 1;
while(i<=20){
sum = sum * i;
i++;
}
System.out.println(sum);
}
你有没有想过可能不是代码的问题,而是 int 的数据范围不够,20 的阶乘为 2432902008176640000
但是 int 的最大值也就 -2^31 —— 2^31-1,即-2147483648 —— 2147483647
while里面的内容是:
sum = sum * i;
i++;
================
j不需要啊,另外sum初始化为1,不是0
你这是求1的阶乘,一直累加到20的阶乘