为什么这两段代码会产生两种不同的结果?
double sum = 1.0;
double xSqFour = x * x / 4;
for (int i = 48; i > 1; i-=2) {
sum = 1.0 + (xSqFour / ((i/2) * (i/2))) * sum;
}
return sum;
和
double sum = 1.0;
double xSqFour = x * x / 4;
for (int i = 24; i > 1; i--) {
sum = 1.0 + (xSqFour / (i * i)) * sum;
}
return sum;
答案 0 :(得分:3)
第二个循环中有一个边界错误。它应该是i > 0
。第一个循环有i > 1
,但它也将i
除以2. 1 / 2 == 0
,因此在第二个循环中它应为i > 0
。