C运行超时找不到原因

pta上显示我运行超时,找不到原因
题目 使用函数求余弦函数的近似值

img

img

img

这是我的
double funcos( double e, double x ){
double a=1,b=1;
for(int i=2;fabs(a)>e;i+2){
for(int j=1;j<=i;j++){
b*=j;
}
a+=pow((-1),i-1)*pow(x,i)/b;
}
return a;
}

img

麻烦大家指点一下!感谢感谢!

for的第三个参数,是 i+=2,不是 i+2,i+2没有改变到i的值,死循环了

修改如下,供参考对照:

#include <stdio.h>
#include <math.h>
double funcos(double e,double x);
int main()
{
    double e,x;
    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
    return 0;
}

double funcos( double e, double x)
{
    double a=1,b=1;
    int   i;
    for(i=2;;i+=2)
    {
        b*=i*(i-1);  //b*=j;  修改
        a+=pow((-1),i/2)*pow(x,i)/b; //a+=pow((-1),i-1)*pow(x,i)/b;修改
        if (fabs(pow(x,i)/b) <= e) break; //修改
    }
    return a;
}