用java的for循环计算1+1/2!+1/3!+1/4!+···的前20项和
展开全部
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询