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

 我来答
小小白喔99
2019-01-23
知道答主
回答量:5
采纳率:0%
帮助的人:3744
展开全部

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


帐号已注销
2017-07-21 · 超过12用户采纳过TA的回答
知道答主
回答量:54
采纳率:100%
帮助的人:19万
展开全部

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimvfx
2017-07-08 · 超过28用户采纳过TA的回答
知道答主
回答量:62
采纳率:85%
帮助的人:15.1万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式