怪事!怪事!JAVA;.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

publicclassTest20{publicstaticvoidmain(String[]args){doublea[]=newdouble[20];//用数组a代表... public class Test20 {
public static void main(String[] args) {
double a[] = new double[20]; //用数组a代表前20个分数中的分子
a[0] = 2;
a[1] = 3;
for (int i = 0; i < 18; i++) {
a[i+2] = a[i+1] + a[i];
}
double b[] = new double[20]; //用数组b代表前20个分数中的分子
b[0] = 1;
b[2] = 2;
for (int i = 0; i < 18; i++) {
b[i+2] = b[i+1] + b[i];
}
double sum = 0.0;
for (int i = 0; i < 20; i++) {
sum = sum + a[i]/b[i];
}
System.out.println(sum);
}
}

为什么运行结果是infinity?
展开
 我来答
q69419595
2012-09-10 · 超过25用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:86.1万
展开全部
sum的值超出了double能表示的范围,所以是infinity
由于b[1]没有被赋值过,默认是0,作为被除数就超出double范围了。
b[2] = 2;改为b[1]=2;即可
李俊MAN
2012-09-10
知道答主
回答量:5
采纳率:0%
帮助的人:8616
展开全部
b[0] = 1;
b[2] = 2;

你这个写的是b[2] 应该是b[1]啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌光QS
2012-09-10 · TA获得超过1365个赞
知道小有建树答主
回答量:464
采纳率:100%
帮助的人:480万
展开全部
b[1]从来没有被赋值,所以是0,于是a[1]/b[1]就是infinity了。b[2] = 2;这句你大概是想写b[1] = 2;吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yingaizhu9999
2012-09-10 · TA获得超过1188个赞
知道小有建树答主
回答量:714
采纳率:0%
帮助的人:506万
展开全部
你的代码写错了哦,请看你代码的11~12行,
b[0] = 1;
b[2] = 2;
第二个应该是b[1] = 2;吧?你直接是b[2]=2;那么b[1]=0;出现了分母是0,结果肯定会infinity啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenwenhai2008
2012-09-10 · 超过14用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:45.5万
展开全部
求解?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式