程序如下:
#include
#include
void main()
{
double sum=0;
int i=0;
while(fabs(pow(-0.5,i))>=pow(10,-4))
{
sum+=pow(-0.5,i);
i++;
}
printf("%lf\n",sum);
}
结果:
#include "stdio.h"
#include "math.h"
int main()
{
double sum=0,t=1;
int i,m=1;
for(i=0;;i++)
{
t=m*pow(0.5,i);
sum+=t;
m=-m;
if(fabs(t)<1e-4)
break;
}
printf("1-1/2+1/4-1/8+...=%lf\n",sum);
}
#include
#include
main()
{
int n=0;
double sum=1,k=-0.5,t=1,m;
while(fabs(t)>0.0001)
{
t=t*k;
m=t;
sum=sum+m;
n++;
}
printf("n=%d ,sum=%lf\n",n,sum);
}
可以化简成
1/2+1/8+1/32+...+1/(2*(4--(n-1)次方))
int main(void)
{
int n = 0;
double s = 0.0,a;
for(a = 1/2;a < 0.00001;a /= 4.0)
{
s += a;
}
////应为上面没一项是原式中的两项相加的结果且这两项分别为2a , -a,所以如果2a也满足要求,就不要最后一项-1了
if((2*a)<0.00001)
s += a;
printf("s = %lf\n",s);
return 0;
}