输入精度,直到最后一项小于精度,求1-1/4+1/7....的和。关于两个代码的区别

#include
#include
int main()
{
double eps;
scanf("%lf",&eps);
int fenmu=1;
double jieguo=1;
int flag=1;
int i;
double sum=0;
for(i=1;;i++){
jieguo=1.0*flag/(1+(i-1)*3);
sum+=jieguo;
flag=-flag;
if(fabs(jieguo)
break;
}
}
printf("sum = %.6lf",sum);
return 0;
}

此代码摘自CSDN某博主

#include
#include

int main(){
int fm = 1;
double eps, item = 0.0, sum = 0.0, sign = 1.0;

scanf("%lf", &eps);

do{
    item = sign*(1.0/fm);
    sign = -sign;    
    fm += 3;    
    sum += item;    
}while( fabs(item) > eps );

printf("sum = %lf", sum);

return 0;

}

很明显,前一个是新生村的产物。后一个更老道,求分母的时候只用了加法(前后两项分母相差3),效率更高。