求助!如何编写一个简单的JAVA Application 应用程序,计算e=1+1/1!+1/2!+1/3!+……1/20!,并输出计算结果。 如何编写一个简单的JAVA Application 应用程序,计算e=1+1/1!+1/2!+1/3!+……1/20!,并输出计算结果。急需答案 谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的两个贴都是简单的问题。不要太多的java知识,你不是为了交作业吗? 本帖最后由 kokobox 于 2010-12-30 11:31:39 编辑 不是为了交作业 我已经出来工作了 因为我在学校的时候没学JAVA 所以不会我就向这里求助 本帖最后由 kokobox 于 2010-12-30 11:32:01 编辑 4行代码 这个不需要Java的很多知识,只是一种编程的思维而已.可以说是为这个题目想一个算法吧.除了Java以外,.net c c++都是类似的. double sum=0;for(int i=1;i<=20;i++){ sum+=1/i;}System.out.println(sum); 本帖最后由 kokobox 于 2010-12-30 11:32:31 编辑 对于这种阶乘的问题还需考虑下类型长度问题,最好使用BigDecimal ,我曾经在面试的时候就遇到这个问题! 刚才仔细看了下,6楼的错了,可能是理解错题了!你再看下,题目是每循环一次都decimal.devide操作。以下是我写的import java.math.BigDecimal;public class Test{ /** * 计算e=1+1/1!+1/2!+1/3!+……1/20! * @param args */ public static void main(String[] args) { BigDecimal temp=new BigDecimal(0); temp =loopA(20); //获得1/1!+1/2!+1/3!+……1/20! temp = temp.add(new BigDecimal(1)); //再加上1 System.out.println(temp); } public static BigDecimal loopA(int number){ BigDecimal result = new BigDecimal(0); BigDecimal decimal = new BigDecimal(1); for(int i = 1; i <= number; i++){ BigDecimal temp = new BigDecimal(1); decimal = decimal.multiply(new BigDecimal(i)); System.out.println("decimal = " + decimal); temp = temp.divide(decimal,50,BigDecimal.ROUND_HALF_EVEN); System.out.println("temp : " + temp); result = result.add(temp); } System.out.println(result); return result; }} 本帖最后由 kokobox 于 2010-12-30 11:33:04 编辑 刚才仔细看了下,6楼的错了,可能是理解错题了!你再看下,题目是每循环一次都decimal.devide操作。以下是我写的 Java codeimport java.math.BigDecimal;public class Test{ /** * 计算e=1+1/1!+1/2!+1/3!+………[/Quote]不是吧··· 我是这样想的 e=1+1/(1!+2!+3!...20!)loop方法主要是计算(1!+20!) 你再看看··· 本帖最后由 kokobox 于 2010-12-30 11:33:25 编辑 return 1 + 1/1 + 1/2 + 1/(3*2) + .... + 1/(20*19*18...); 20! < Long.MAX_VALUE 所以使用 long 就可以了。 其实long也不一定需要double e = 1, f = 1;for (int i = 1; i <= 20; i++) { f /= i; e += f;}System.out.println(e); //不考虑精度的话,计算e=1+1/1!+1/2!+1/3!+……1/20!public double e(){ final int n = 20; double e=1; for(int i=1;i<=n;i++){ double t=1; for(int j=2;j<=i;j++){ t*=j; } e+=1/t; } return e;} 只计算一次阶乘 public static void test(){ int num = 20; double sum =0; long temp = 1; for(int i=2;i<=num;i++){ temp =temp * i; sum+=temp; } System.out.println(1/sum); } public static void main(String[] args) { int num = 20; double sum =0; double temp = 1; for(int i=1;i<=num;i++){ temp *= i; System.out.println(i+"!="+temp); sum+=1/temp; System.out.println("sum="+sum); } System.out.println(sum); } java for循环问题 期待大牛,随机数问题 JCreater 报错 这个程序为什么打印不出来 我看过了和原来的程序没有区别呀. 请大家帮帮我!!!谢谢了 Java 出学 随机数问题 请问,客户端调用我的servlet,我需要返回给客户端调用成功的信息,我该怎么做呢? 编码转化的问题,如何在java中将JIS转化成SJIS。谢谢。 大家帮我看看这段程序,很简单的 SCJP -- about instanceof operator 大神帮忙解释下代码,关于求一个数的绝对值的趣味解法 急求java网络编程电子书 求帮忙
你不是为了交作业吗?
我就向这里求助
for(int i=1;i<=20;i++)
{
sum+=1/i;
}
System.out.println(sum);
刚才仔细看了下,6楼的错了,可能是理解错题了!你再看下,题目是每循环一次都decimal.devide操作。以下是我写的import java.math.BigDecimal;public class Test{
/**
* 计算e=1+1/1!+1/2!+1/3!+……1/20!
* @param args
*/
public static void main(String[] args) {
BigDecimal temp=new BigDecimal(0);
temp =loopA(20); //获得1/1!+1/2!+1/3!+……1/20!
temp = temp.add(new BigDecimal(1)); //再加上1
System.out.println(temp);
}
public static BigDecimal loopA(int number){
BigDecimal result = new BigDecimal(0);
BigDecimal decimal = new BigDecimal(1);
for(int i = 1; i <= number; i++){
BigDecimal temp = new BigDecimal(1);
decimal = decimal.multiply(new BigDecimal(i));
System.out.println("decimal = " + decimal);
temp = temp.divide(decimal,50,BigDecimal.ROUND_HALF_EVEN);
System.out.println("temp : " + temp);
result = result.add(temp);
}
System.out.println(result);
return result;
}
}
import java.math.BigDecimal;public class Test{
/**
* 计算e=1+1/1!+1/2!+1/3!+………
[/Quote]不是吧··· 我是这样想的 e=1+1/(1!+2!+3!...20!)
loop方法主要是计算(1!+20!) 你再看看···
for (int i = 1; i <= 20; i++) {
f /= i;
e += f;
}
System.out.println(e);
public double e(){
final int n = 20;
double e=1;
for(int i=1;i<=n;i++){
double t=1;
for(int j=2;j<=i;j++){
t*=j;
}
e+=1/t;
}
return e;
}
int num = 20;
double sum =0;
long temp = 1;
for(int i=2;i<=num;i++){
temp =temp * i;
sum+=temp;
}
System.out.println(1/sum);
}
public static void main(String[] args) {
int num = 20;
double sum =0;
double temp = 1;
for(int i=1;i<=num;i++){
temp *= i;
System.out.println(i+"!="+temp);
sum+=1/temp;
System.out.println("sum="+sum);
}
System.out.println(sum);
}