#include<stdio.h>
double fact (int n) ;
double power(double x,int n);
int main()
{
int ok = 1,i;
double x,ans = 0;
scanf("%lf",&x);
for(i = 0;i< 20;i++) {
ans += ok *power(x,2*i+1)/((2*i+1)*fact(i));
ok *= -1;
}
printf("%lf\n",ans);
return 0;
}
double fact (int n)
{
double ans = 1;
if(n == 0) return 1;
while(n>=1) ans *= n,n--;
return ans;
}
double power(double x,int n)
{
double ans = 1;
if(n == 0) return 1;
while(n--) ans *= x;
return ans;
}
追问
结果运行不对啊,为什么是负值
追答当然是负值
每两项一组(1和2 3和4 5和6)
20项 每两项一组
两项中 后面一项分子虽然大,但是分子多了 2500的倍,后面的大,肯定是负值