用java的for循环计算1+1/2!+1/3!+1/4!+···的前20项和

如题所述

package s1;//包名可以不要//
public class s1{
public static void main(String[]args) {
double a,b,c,sum=0;//因为有小数所以是double类型//
while(true){
for(a=2;a<=20;a++) {
c=(1/a);//计算每一次循环的结果//
sum=sum+c;//累计每一次的//
}
sum=sum+1;//加上1//
System.out.println(+sum);//输出结果//
break;//结束while循环//

}
}

循环结果为:3.5977396571436824


温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-21

F1 = 1

F2 = F1 / 2

F3 = F2 / 3

Fn = F(n-1) / n

如果每一项都计算一遍阶乘,那么程序的复杂度会很大,可以通过备忘录的形式,比如将F(n-1)的计算结果保存下来,计算Fn的时候,就不用再计算(n-1)的阶乘了。

代码如下:

public class Test3 {
Map<Integer, Double> map = new HashMap<Integer, Double>();

public static void main(String[] args) {
Test3 test = new Test3();
double sum = 0;
int index = 20;
for (int i = 1; i <= index; i++) {
sum += test.cal(i);
}
System.out.println("前" + index + "项之和:" + sum);
}

public double cal(int num) {
if (num == 1) {
map.put(1, (double) 1);
return 1;
}
Double value = map.get(num - 1);
double result = value / num;
map.put(num, result);
return result;
}
}

运行结果:

前20项之和:1.7182818284590455

第2个回答  2013-11-10
int sum =0,temp=1 for(int i=1;i<=20;i++) { temp=i*temp sum+=1/(temp); }System.out.println(sum);
第3个回答  2017-07-08
double result = 0;
for(int i=1;i<20;i++){
int temp = i;
for(int j=1;j<i;j++){
temp *= j;
}
result+=1*1.0/temp;
}

第4个回答  2018-04-12
public class example43for {
public static void main(String args[]){
double result = 0;
for(int i=1;i<20;i++){
int temp = i;
for(int j=1;j<i;j++){
temp *= j;
}
result+=1*1.0/temp;
}
System.out.println("result="+result);
}
}
result=1.7182818351251556

编写Java程序,使用while循环语句计算1+1\/2!+1\/3!…1\/20!之和.
public class WhileDemo { public static void main(String[] args) { \/*i=i+1的简写形式是i+=1;但是二者有本质的区别:如果 i是short类型,+=:会自动类型提升,而=则不会 所以 short i=0;i+=1;\/\/编译通过,类型提升 i=i+1;\/\/编译失败,因为这是赋值操作,i是short类型,而1是默认是in...

java用do-while循环计算1 1\/2! 1\/3! 1\/4! ...的前20项和
public static int jieCheng(int n) { int result = 1;for (int i = 1; i <= n; i++) { result *= i;} return result;} 然后如你要求的用dowhile()循环计算:(也给你写了个方法)public static double caculate(int n) { double sum = 0.0;int i=1;do{ sum = sum + 1...

使用java程序实现 根据输入的自然数n求1+1\/2+1\/3+1\/4+…+1\/n的和
long size = n.longValue();\/\/为尽量减少精度损失,采用全部同分后 分子和 除以 分母 的方式 for(long i=1;i<=size;i++){ \/\/计算分母 product = product.multiply(new BigDecimal(i));} for(long i=1;i<=size;i++){ \/\/计算分子和 sum = sum.add(product.divide(new BigDecimal(i)...

用JAVA的For循环编写1+1\/2+1\/3+1\/4+1\/5+1\/6+1\/7+1\/8+1\/9+1\/10
public static void main(String[] args){ float sum = 0;for (int i = 1;i <= 100;i++) { sum+=(float)1\/i;} System.out.println(sum);} } 我把上面的哥们的东西改了下,估计更好看一些!运行没错。

用for循环语句计算1+1\/2+1\/3+1\/4~~~+1\/1+n其中n=1,2,
我用java写的 n是你要加到得那个数,我没看清你要加到几分之几 就用n代替了 如果你要加到1/100就把n换成100 class A{ public static voidmain(String args[]){ double b=0;for(int i=1;i<=n;i++){ b+=1\/(double)i;} System.out.println(b);} } ...

java while语句 求1+1\/2+1\/3+1\/4
sum = sum + isShu; } System.out.println(sum);} }写这个计算公式你应该以数学的角度去想.Step1. sum=1\/2+0;Step2. sum=1\/3+sum;Step3. sum=1\/4+sum;.以此类推..Step19. sum=1\/20+sum;第一个问题.用while是不是最快最简便的?对于一开始初学者来说,实现一个问题的教...

用java编写个1+1\/2+1\/3+1\/4...1\/n
public static void main(String[] args) { System.out.print("输入n:"); int n = new Scanner(System.in).nextInt(); double sum = 0; int i = 1; while (i <= n) { sum += (double) 1 \/ i++; } System.out.println(sum);} ...

编写代码求表达式的值:1+1\/2-1\/3+1\/4-1\/5+1\/6-……+1\/20(语言不限于C#...
用java简单的写下吧,double sum=1;\/\/初始化一个值 for(int i=2;i<=20;i++){\/\/看下表达式特点,自分母为2始,开始有正负之分,就OK了。if(i%2==0){ sum= sum+1\/i;}else { sum=sum-1\/i;} } 肯定不是最高效的,解决问题有余了。

java语言中1+1\/2!+1\/3!……中!+什么意思,详解视
2!是表示2的阶乘,也就是2×1;3!当然就是3的阶乘啦,用数学式子表示就是3×2×1,之后4!5!6!的阶乘也依次类推。题中的1+1\/2!+1\/3!……用java式子表示就是:1+1\/(2*1)+1\/(3*2*1)……

Java编程:计算1+1\/2+1\/3+1\/4+···+1\/n,加到多少项时,其和可超过10...
public static void main(String args[]) { double n=1;double sum=0;while(sum<10){ sum=sum+1\/n;System.out.println("n="+n);System.out.println("sum="+sum);n++;} System.out.println("加到第"+(n-1)+"项时满足sum>10");} } n=12367.0 sum=10.000043008275778 加到第...

相似回答