输出的 Sum 全是1。不知道哪里错了public class jiecheng
{
   int   n=0;
    
    double factorial(int i)
   { 
       long mut=1;
       double s=0.0;
        for(n=1;n<=i;n++) 
     {
       mut=mut*n;
       s=1/mut;
     }
     return s;
   }
                                        
   public static void main(String[] args)
   {
      jiecheng a=new jiecheng();
      double sum=0.0;
      int b=0;
      for(b=1;b<21;b++)   
   {
        int start=0;
       for(start=0;start+1<b;start++)
     {
      int k=b-start;
     
       System.out.print("1/"+k+"!+"); 
    }
    
    System.out.print("1!=");
    sum=sum+a.factorial(b);    
    System.out.println(sum) ;
     }   
  }
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【JAVA_mentu】截止到2008-07-31 00:26:15的历史汇总数据(不包括此帖):
    发帖的总数量:13                       发帖的总分数:250                      每贴平均分数:19                       
    回帖的总数量:42                       得分贴总数量:16                       回帖的得分率:38%                      
    结贴的总数量:13                       结贴的总分数:250                      
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:7.69  %               无满意结分率:8.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=JAVA_mentu
      

  2.   

    如果只求阶乘和  是如1!+2!+3!+..... ?
    程序如public class jiecheng {
     int   n=0;
        /*
         * 阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。      */
        double factorial(int i)
       { 
              long mut=1;
           //   double s=0.0;
                  for(n=1;n<=i;n++) 
            {
                 mut=mut*n;
                // s=1/mut;
            }
            return mut;
       }
                                            
       public static void main(String[] args)
       {
             jiecheng a=new jiecheng();
             int b=4;
             System.out.print(b+"的阶乘:");
             System.out.println(a.factorial(b)) ;   
             long sum=0;  //定义阶乘和的变量
             for(int i=0;i<=b;i++){
              sum+=a.factorial(i);
              System.out.print(i+"!+");
             }
             System.out.println("="+sum);
             
         }   
      }
      

  3.   

         for(n=1;n<=i;n++) 
            {
                 mut=mut*n;
                 s=1/mut;
            }
    是不是应该   for(n=1;n<=i;n++) 
            {
                 mut=mut*n;
                 s+=1/mut;//有个+号在前边吧.也就是s = s+1/mut;
            }
      

  4.   

    首先你的错误
     s=1/mut; 1是整形,MUT是long型,结果仍是LONG,也就是只要MUT>1,1/mut都恒等于0.然后在转化为S的double型
    下面程序是改好的自己运行下,你的逻辑也错了那么一点。可以结账了应该
    public class Test
    {
       int   n=0;
        
        double factorial(int i)
       { 
              long mut=1;
              double s=0.0;
                  for(n=1;n<=i;n++) 
            {
                 mut=mut*n;
                 
            }
            return mut;
       }
                                            
       public static void main(String[] args)
       {
       Test a=new Test();
             double sum=0.0;
             int b=0;
             for(b=1;b<21;b++)   
       {
               int start=0;
              for(start=0;start+1<b;start++)
         {
             int k=b-start;
             
           System.out.print("1/"+k+"!+"); 
           }
           
           System.out.print("1!=");
           sum=sum+a.factorial(b);       
        System.out.println(sum) ;    
         }   
      }
    }
      

  5.   

    简单实现10阶乘之和。public class Factorial {
    public static void main(String args[]) {
    long f = 1;
    long sum = 0;
    for (long i = 1; i < 10; i++) {
    f = f * i;
    sum += f;
    }
    System.out.println("The result is " + sum);
    }}
      

  6.   

    这句话是我要的,其实把 s=1/mut 改成 s=1.0/mut 就行了。谢谢提醒!