要求1!+2!+...+10!
结果却会出现负数,这是怎么回事?我的程序如下,是否有问题?请帮忙解决了
public class JieCheng
{
public static void main(String args[])
 {
  long sum0=0;
  int sum=1;
  int i;
  int j;
  for(i=0;i<=9;i++)
   {
    for(j=10-i;j>=1;j--)
     {
        sum=sum*j;
     }
    sum0=sum0+sum;
   } 
  System.out.println(sum0);
 }
}谢谢帮忙

解决方案 »

  1.   

    运算结果溢出long和long的上界。建议用动态数组来保存阶乘的结果。
      

  2.   

    long整形取值范围是-2^63到2^63-1
    而10!+9!+...+1!所得出的数值远远小于long整形最大取值
    为什么会发生溢出?
    不是很明白,谁能告诉我?谢谢了
      

  3.   

    public class JieCheng
    {
    public static void main(String args[])
     {
      long sum0=0;
      long sum=1;
      int i;
      int j;
      for(i=0;i<=9;i++)
       {
        for(j=10-i;j>=1;j--)
         {
            sum=sum*j;               
         }
        System.out.println("sum-"+i+":"+sum);
        sum0=sum0+sum;
        
        // 清除原来记录
        sum = 1; 
       } 
      System.out.println(sum0);
     }
    }
      

  4.   

    public class JieCheng
    {
    public static void main(String args[])
     {
      long sum0=0;
      int sum=1;
      int i;
      int j;
      for(i=0;i<=9;i++)
       {
        for(j=10-i;j>=1;j--)
         {
            sum=sum*j;
         }
        sum0=sum0+sum;
        sum = 1;
       } 
      System.out.println(sum0);
     }
    }
      

  5.   

    悟到了
    原来我的sum没有消除~