帮我看下这段简单代码 错在哪里

来源:百度知道 编辑:UC知道 时间:2024/06/14 13:57:45
public class jch{
public static void main(String[] args){
int a,b;
int sum=0,c=1;
for(a=1;a<=10;a++){
for(b=1;b<=a;b++){
c*=b;
sum+=c;
}
}
System.out.println("阶乘和是"+sum);
}
}
要求的是1到10的阶乘和,我算出来的是个负数 麻烦帮我看下我到底是错在哪里 !!!
你们的方法都试过了 难道 1到10的阶乘和是 5736758824747023554
应该没这么大吧

1+1*2+1*2*3+1*2*3*4
阶乘是这样

你的代码写的就不对,肯定不会有正确的输出
以下两种写法
第一种

//1!+2!+3!......+10!
int sum = 0;
for (int i = 1; i <= 10; i++)
{
int mul = 1;
for (int j = i; j >= 1; j--)
{
mul *= j;
}
sum += mul;
}
System.out.println(sum);

第二种
int sum=0;
int n=1;
for(int i=1;i<11;i++){
n=n*i;
sum=sum+n;
}
System.out.print(sum);

int sum=0,c=1;
把int改为long,
5736758824747023554超过了int的范围
你程序写错了,c=1,应该写在第一个for循环的里面!!!!
阶乘和是4500244

阶乘是

1x2x3x4x5x6x7x8x9 这样的吧?

int c = 1;
for(int i =1 ;i<10;i++){

c*=i;

}

for (int a=1;a<=10;a++){
for (int b=1;b<=a;b++){
c*=b;
sum+=c;
}
}
前面的int a,b;去掉即可