double funcos( double e, double x ){
double sum=0.0,mul,res,mid=1.0;
int i,j,k,cnt;
for(i=0,cnt=1;mid>=e;i=i+2,cnt++,mul=1.0,res=1.0){
for(j=0;j<i;j++){
mul*=x;
}
for(k=1;k<=i;k++){
res*=k;
}
mid=mul/res;
if(cnt%2)
sum+=mid;
else
sum-=mid;
}
return sum;
}
double funcos( double e, double x ){
double temp1=1,temp2=1.0,temp3=1.0,sum=1.0;
int i,j=-1;
for(i=2;temp1>=e;i+=2){
temp2*=x*x;
temp3*=i*(i-1);
sum+=j*temp2/temp3;
temp1=temp2/temp3;
j=-j;
}
return sum;
}
第一段是我自己写的,第二段是参考了博主的,对比发现,我的写法效率太低,每做一次循环,就要做两个循环和一个判断,运行太慢
博主的设了三个变量 temp123,而且sum从1开始,省去了一次循环,还有一个控制正负的j,比我的效率高不少,运行时间也少了好几毫秒