编写Java程序,使用while循环语句计算1+1/2!+1/3!…1/20!之和.

publicclassExample_02{publicstaticvoidmain(Stringargs[]){doublesum=0,a=1;inti=1;while... 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);
}
}
!为阶乘 求解释 a = a*(1.0/i);
这串代码什么意思 真没看懂 就解释这一条就行
展开
 我来答
coco22
高粉答主

2018-03-31 · 说的都是干货,快来关注
知道大有可为答主
回答量:254
采纳率:100%
帮助的人:3.7万
展开全部
  • package practice;  

  • /* 

  • 使用while循环 计算1+1/2!+1/3!+...+1/20! 

  • a用于存储前n个阶乘分之一 

  • sum 用于累加和 

  • */  

  • 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是默认是int类型 

  • */  

  • double sum = 0,a = 1;//因为是分式,所以用double类型  

  • int i = 1;  

  • while(i <= 20) {  

  • sum +=a;  

  • i++;  

  • a*=(1.0/i);//使a的值发生变化  

  • System.out.println(a*i);  

  • }  

  • System.out.println(sum);  

  • System.out.println("_________________________");  

  • ForDemo.main(args);  

  • System.out.println(Text.jieCheng(4));  

  • }  

  • }  

  • class ForDemo{  

  • public static void main(String[] args) {  

  • double sum = 0,a = 1;  

  • for (int i = 1; i <=20; i++) {  

  • sum +=a;  

  • a*=(1.0/i);  

  • System.out.println(a*i);  

  • }  

  • sum--;  

  • System.out.println(sum);  

  • }  

  • }  

  • //递归做法:效率不高,判断影响性能  

  • class Text{  

  • public static void main(String[] args){  

  • //       double sum=0.0,count=1.0;  

  • // while(count<=20.0){  

  • // sum+=1.0/(jieCheng(count));  

  • // count++;  

  • // }  

  • // System.out.print(sum);  

  • }  

  • public static long  jieCheng(long sum){  

  • /* for(int i=1;i<=c;i++){ 

  • sum*=i; 

  • }*/  

  • if(sum<=1)return 1;  

  • return sum*jieCheng(sum-1);  

  • }  

  • }  

伏松桖0k
推荐于2017-11-23 · TA获得超过1826个赞
知道小有建树答主
回答量:1410
采纳率:100%
帮助的人:719万
展开全部
呵呵,你知道阶乘的,他其实就是这样的,比如1/24就可以写成(1/2)*(1/12)这样吧,a=a*(1/i)就可以理解成这样子,第一个是1,第二个就是1*(1/2)结果就是0.5下来呢,就是0.5*(1/3)这个呢就等于是(1/2)*(1/3)也就等于是1/3的阶剩了呀,你说对不,一直循坏到结果,这样理解了吧. 在不理解可以问我,我在线.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bnp03853
2011-01-20 · TA获得超过762个赞
知道小有建树答主
回答量:726
采纳率:0%
帮助的人:536万
展开全部
这要看你while循环体怎么写的了?
1)
int i=1,n=0;int sum=0;
while(sum<=1){
sum=sum+1/i;
i++;
}
n=i;
上面这种情况无法跳出循环,因为1/i=0(i>1),所以sum=1;循环不会停止;

2)
double i=1,sum=0;int n=0;
while(sum<=1){
sum=sum+1/i;
i++;
}
n=(int)i;
上面这种情况无法跳出循环,因为1/i>0(i>1),所以sum>1;循环停止,n=2;
你可能是除法规则没有理解,除法和数据类型相关的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeafee
2011-01-19 · TA获得超过134个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:75.7万
展开全部
a = a*(1.0/i)
a乘上1/N 就是 1/N!

阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。 例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。
参考阶乘概念
http://baike.baidu.com/view/245476.htm#1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙大月半
2011-01-19 · 各种简单家常小菜儿,简单方便又美味
孙大月半
采纳数:109 获赞数:1528

向TA提问 私信TA
展开全部
把a*(1.0/i)赋值给a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式