求1!+2!+...+60!的值。
public class TestDemo {
    public static void main(String args[]){
    double sum = 0.0;
    for( int x = 1 ; x <= 60 ; x ++){
         double temp = 1.0;
 for(int y = 1 ; y <= x ; y ++ ){
     temp *= y;
 }
             sum += temp;
}
System.out.println("计算结果:" + sum );
}
)没有使用eclipse 现在用的DOS去执行的 但是问题显示需要class interface enum 我的文件名和类名是一样的 

解决方案 »

  1.   


    public class TestDemo
    {
    public static void main(String[] args)
    {
    long sum = 0; for (int i = 1; i < 61; i++)
    {
    sum+=factorial(i);
    } System.out.println(sum);
    } // 阶乘,求num的阶乘结果
    public static long factorial(int num)
    {
    if (1 == num)
    {
    return 1;
    }
    else
    {
    return num * factorial(num - 1);
    }
    }}
    操蛋的题目,刚开始我还整个返回类型int,雷死我了结果这么大都超int上限了
    7130771808709376537
      

  2.   

    哥们,你的代码少个}最后一个怎么是)啊{}不成对,是不是?public class TestDemo
    {
    public static void main(String args[])
    {
    double sum = 0.0;
    for (int x = 1; x <= 60; x++)
    {
    double temp = 1.0;
    for (int y = 1; y <= x; y++)
    {
    temp *= y;
    }
    sum += temp;
    }
    System.out.println("计算结果:" + sum);
    }
    }
    不过接到我也有问题了,咱俩出来的结果不一样啊,纠结的很啊double和long精度错这么远?计算结果:8.46206204346806E81
      

  3.   

    我是打酱油路过的,觉得你的算法不够优化啊?double sum = 0.0;
    double temp = 1.0;
    for(int i = 1 ; i <= 60 ; i++){
        temp *= i;
        sum += temp;
    }多一重循环带来的运算量增加是乘法级的