#include
#include
int fenzi(int i) // 分子就是 1 3 7 13 21 31 他们之间的差是 2 4 6 8 10
{
if (i <= 0)
return 1;
return i * 2 + fenzi(i-1);
}
int fenmu(int i) // 分母就是 2 的 i + 1 次方
{
return (int)pow(2, i+1);
}
int main()
{
double sum = 0;
int flag, x, y;
for (int i = 0; i < 20; i++)
{
x = fenzi(i);
y = fenmu(i);
flag = pow(-1, i); // + - 随i是奇偶变换
printf("%c%d/%d", flag > 0 ? '+' : '-', x, y);
sum += flag * x * 1.0 / y;
}
printf(" = %lf\n", sum);
return 0;
}
找到规律,代码并不难。供参考
#include
int main()
{
double a, b, r;
int i;
int sign = 1;
a = 1;
b = 2;
r = 0;
for(i = 1; i <= 20; i ++)
{
r += a/b*sign;
a += i*2;
b *= 2;
sign*=-1;
}
printf("result = %lf\n", r);
}