我必须用#include<stdio.h>
编写这个程序。
我必须从用户那里阅读'n'
系列的最高功率。
当x=45 and n=9
,然后程序给我0.7068251967
。但是当我使用我的计算器时,我得到了0.7068251828
。
我还必须使用递归。
#include<stdio.h>
float pow(float n, int p)
{
if(p == 0)
return 1;
else
return n * pow(n, p-1);
}
int fact(int n)
{
if(n == 0)
return 1;
else
return n * fact(n-1);
}
int main()
{
int n, x, i, sign = 1;
float sum, r;
printf("Enter the angle in degrees.\n");
scanf("%d", &x);
r = 3.14 * x / 180.0;
printf("Enter the odd number till which you want the series.\n");
scanf("%d", &n);
if(n % 2 == 0)
printf("The number needs to be an odd number.\n");
else
{
for(i = 1, sum = 0; i <= n; i += 2, sign *= -1)
{
sum += (sign * pow(r, i)) / fact(i);
}
printf("The sum of the series is %.10f.\n", sum);
}
return 0;
}
我认为一个原因是你将pi估计为3.14。也许你的计算器会考虑pi的更多数字。尝试使用更多数字进行近似pi。
@Mat是对的,使用M_PI而不是你的'穷人'3.14。此外,并不总是将x取幂为幂n或阶乘。请注意,和的下一项:a_ {k + 2} = - a_ {k} x ^ 2 /(k(k-1)),(偶数项为零)使用类似的东西
double s=x,a=x,x2=-x*x;
int i;
for (i=3;i<=n;i+=2)
{
a*=x2/i/(i-1);
s+=a;
}