c中的几何级数,错误的解决方案

geometric series in c, wrong solution

我得到了这个系列的错误解决方案:(-1/4)^(n+1)*(z-1)^n

对于|z-1|<4,序列应该收敛到-1/3+z

对于 z=0.5 应该是解决方案 -2/7,但是如果我尝试用 c 绘图,结果是 0...

这是我的代码:

#include <stdio.h>
#include <math.h>

int main(){
    double sum=0;
    int n;
    for(n=0;n<=100000;n++){
        sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);
    }
    printf("sum= %f\n",sum);
}

问题就在这里:

    sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);

-1是整型字面量,4也是;因此,(-1/4)-0,而不是 -0.25(这可能是您想要使用的)。如果你想在 C 中使用浮点文字,如 -1.0

-1/4 将导致 0 作为整数除法,请改用浮点数:

     (float)-1/4

1/4指的是欧几里德除法因此得到0。
使用 sum+=pow((-1.0/4.0),(n+1)) * pow((0.5-1),n); 得到好的结果 sum= -0.285714