pta上显示我运行超时,找不到原因
题目 使用函数求余弦函数的近似值
这是我的
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;
}
麻烦大家指点一下!感谢感谢!
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;
}