一个Java笔试题

来源:百度知道 编辑:UC知道 时间:2024/06/11 10:59:55
阅读下面的代码,回答:(1)写出这段代码所表示的数学表达试;(2)找出这段代码存在的问题。
double d=0;
for(int i=1;i<=10000;i=i+1){
d=d+1/(i*(i+1)*(i+2));
if(i==100)
System.out.println("i=100时:"+d*4);
else if(i==1000)
System.out.println("i=1000时:"+d*4);
}
System.out.println("i=10000时:"+d*4);

(1)Y=1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+.....+1/[N*(N+1)*(N+2)]
(2)这段代码的FOR循环存在问题,因为 d=d+1/(i*(i+1)*(i+2)); 如果i是int型,d被转换成int型了,所以返回0。应该将FOR循环改为:for(double i=1.0;double<=10000.0;i=i+1.0)

公式:d/4=1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+……
问题:d=d+1.0/(i*(i+1)*(i+2));

问题应该在1/(i*(i+1)*(i+2)),这里是int/int,所得为int,不是浮点数。
表达式不知道应该在那样简化(我数学不太好),这是个数学问题:
1 1 1 1 1
---+—--+---+---+---+……
1*2*3 2*3*4 3*4*5 4*5*6 5*6*7

数学表达式: (i-1)*1/(i-1)*i*(i+1)+1/(i*(i+1)*(i+2)) 是个10000的数列;

for(int i=1;i<=10000;i=i+1) i=i+1部分 改成 i++

System.out.println("i=10000时:"+d*4); 少了elseif语句else if(i==10000)

数学表达式 :y=x+3/(X+2)(X+1) 好像有错。。 没算出来。
问题在1/(i*(i+1)*(i+2)),这里是int/int,所得为int,不是浮点数。