帮忙分析下这个正确答案,只要分析正确就给分。

wolcott2387 2011-02-26 10:03:42
不显示删除回复显示所有回复显示星级回复显示得分回复 使用while循环语句计算1+1/2!+1/3!+...1/20!之和
不明白a = a*(1.0/i);这行代码

public class Example_02 {
public static void main(String args[])
{
double sum = 0,a = 1;
int i = 1;
while(i <= 20)
{
sum = sum+a;
i = i+1;
a = a*(1.0/i);
}
System.out.println(sum);
}
}



...全文
57 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Darling_sheep 2011-02-26
  • 打赏
  • 举报
回复
不得不说这个程序写的很好,把两个循环用一个循环代替。楼主你试着把每一步循环的结果写一下看一下,相信你能看的懂a = a*(1.0/i);这行代码,整个程序的精锐就是这一行。
当i=2时,sum=1+1/(1*2),a=1/(1*2);
当i=3时,sum=1+1/(1*2)+1/(1*2*3),a=(1*2*3);
.......
明白了吧?
i李小武 2011-02-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hudie1234567 的回复:]

1*(1.0/2)=1/2,即(1/2!);1/2**1.0/3=1/6,即(1/3!),依次类推!
[/Quote]
同意这个!
天空win 2011-02-26
  • 打赏
  • 举报
回复
你好:计算1+1/2!+1/3!+...1/20!
如果不用 a = a*(1.0/i)的话,你想啊1/2!在Java中结果是零,要得到正确结果用1.0/2!才能得到小数值
rainfoxer 2011-02-26
  • 打赏
  • 举报
回复
a = a*(1.0/i);是累积啊 就跟sum = sum+a;是累和一样 你带几个数字进去就能体会到了

24K純帥 2011-02-26
  • 打赏
  • 举报
回复
!是阶层,i是什么啊,虚数么
OpenJavaPad 2011-02-26
  • 打赏
  • 举报
回复
数据类型自动提升
茫茫大海 2011-02-26
  • 打赏
  • 举报
回复
1*(1.0/2)=1/2,即(1/2!);1/2**1.0/3=1/6,即(1/3!),依次类推!
licip 2011-02-26
  • 打赏
  • 举报
回复
1.0/i
这是把它变成实数来计算,非则,它是整数的计算。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧