请教这个JAVA问题,用while语句计算1+1/2!+·····+1/20!的和。

publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubinti=1;doublea=1;dou... public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
double a = 1;
double c = 0;
while (i<=20){
while (i>0){
a =1;
a= a * i;
i--; //这里i的改变是否会影响原来i的值?

}
c = c + 1/a;
i ++;

}
System.out.println(c);
展开
 我来答
samson831
2011-02-05 · TA获得超过554个赞
知道小有建树答主
回答量:503
采纳率:0%
帮助的人:261万
展开全部
当然要影响,你只定义了一个全局变量i,只有重新定义局部变量i才会使全局变量在局部被屏蔽。
稍微改一下,你定义一个j,就行了。
int i = 1;
int j = 0;
double a = 1;
double c = 0;
while (i<=20){
j = i;
//下面这个循环出来结果都是a =1;你再改一下逻辑
while (j>0){
a =1;
a= a * j;
j--;
}
c = c + 1/a;
i ++;

}
System.out.println(c);

//稍微改一下,只保留4位小数。
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
int sum = 0;
while (i<=20){
sum += 10005/i; //10005,保留4位小数,5是用来做四舍五入的。
i ++;
}
double result = sum/10000.0;//这个10000.0必须要有.0,否则就不会有小数
System.out.println(result);
kanmars
2011-02-05 · 超过25用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:66.9万
展开全部
两个循环设置两个变量
int n=20;
int i=1;
float temp,result;
result=0;
temp=1;
while(n>0)
{
while(i<=n)
{
temp=temp/i
i++;
}
result+=temp;
temp=1;
i=1;
n--;
}
最后出来的result就是结果
(手写代码,未运行过,可能会有语法错误,自己修改)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
benjamin519
2011-02-05 · TA获得超过778个赞
知道小有建树答主
回答量:413
采纳率:90%
帮助的人:196万
展开全部
你所指的影响是什么意思?是指I的值会被改写吗?
我想会被改写的。i-- 的意思是先运算然后再自减。如果原先的i=2.那么跑完这条语句后应该是1了。
可以去复习一下全局变量和局部变量。最直接的方式就是把代码跑一遍。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nqildp
2011-02-06 · TA获得超过1419个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:963万
展开全部
呵呵,你知道阶乘的,他其实就是这样的,比如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的阶剩了呀,你说对不,一直循坏到结果,这样理解了吧. 在不理解可以问我,我在线.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式