,有个地方没看懂。
求助,有个地方没看懂。。。
#include <stdio.h>
int main(void)
{
double data[100]; /* Stores data values */
double sum = 0.0; /* Stores sum of reciprocals */
double sign = 1.0;
int i =0;
for( i = 1 ; i<=100 ; i++)
data[i-1] = 1.0/(2*i*(2*i+1)*(2*i+2));
for( i = 0 ; i<100 ; i++)
{
sum += sign*data[i];
sign = -sign;
}
/* Output the result */
printf("\nThe result is %.4lf\n", 4.0*sum+3);
printf("\nThe result is an approximation of pi, isn't that interesting?");
return 0;
}
答案有个地方看不懂:sum=data[0]-data[1]+data[2]-data[3]...-data[99]
sum为什么等于data[0]-data[1]+data[2]-data[3]...-data[99]?
而不是等于-data[0]-data[1]-data[2]-data[3]...-data[99],与sign=-sign=-1相乘不是负数相加吗?
------解决方案--------------------
当i=0的时候,
sum += sign*data[i]==》sum=data[0]
然后才是是sign符号变换,也就是sum=data[0]+(-1)*data[1]
......
------解决方案--------------------
sign = -sign; 等价于 sign = (-1)*sign;
每执行一次,sign符号变换一次,负负得正嘛。。
#include <stdio.h>
int main(void)
{
double data[100]; /* Stores data values */
double sum = 0.0; /* Stores sum of reciprocals */
double sign = 1.0;
int i =0;
for( i = 1 ; i<=100 ; i++)
data[i-1] = 1.0/(2*i*(2*i+1)*(2*i+2));
for( i = 0 ; i<100 ; i++)
{
sum += sign*data[i];
sign = -sign;
}
/* Output the result */
printf("\nThe result is %.4lf\n", 4.0*sum+3);
printf("\nThe result is an approximation of pi, isn't that interesting?");
return 0;
}
答案有个地方看不懂:sum=data[0]-data[1]+data[2]-data[3]...-data[99]
sum为什么等于data[0]-data[1]+data[2]-data[3]...-data[99]?
而不是等于-data[0]-data[1]-data[2]-data[3]...-data[99],与sign=-sign=-1相乘不是负数相加吗?
------解决方案--------------------
当i=0的时候,
sum += sign*data[i]==》sum=data[0]
然后才是是sign符号变换,也就是sum=data[0]+(-1)*data[1]
......
------解决方案--------------------
sign = -sign; 等价于 sign = (-1)*sign;
每执行一次,sign符号变换一次,负负得正嘛。。