当前位置:编程学习 > JAVA >>

Java入门者遇到一个小的程序问题

求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 我的文件名和类名是一样的  --------------------编程问答-------------------- 你确定大小写都一致么????? --------------------编程问答--------------------

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 --------------------编程问答-------------------- 哥们,你的代码少个}最后一个怎么是)啊

{}不成对,是不是?



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

--------------------编程问答-------------------- String args[]粗心啊 --------------------编程问答-------------------- 最后是“{”不是“(”。 --------------------编程问答-------------------- 我是打酱油路过的,觉得你的算法不够优化啊?

double sum = 0.0;
double temp = 1.0;
for(int i = 1 ; i <= 60 ; i++){
    temp *= i;
    sum += temp;
}


多一重循环带来的运算量增加是乘法级的 --------------------编程问答--------------------
引用 4 楼 kemucc 的回复:
String args[]粗心啊
+1
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,