需要计算具有给定精度的序列:x - x^3/3 + x^5/5 - x^7/7 + ... 程序只计算序列到第一项,误差是多少,如何加速该计划?
#include <stdio.h>
#include <stdlib.h>
int factorial(int n) {
if (n == 0)
return 1;
if (n > 0)
return factorial(n - 1) * n;
}
long long deg(int n, double k) {
if (n == 0)
return 1;
else
return deg((n - 1), k) * k;
}
int main () {
double eps;
scanf ("%lf", &eps);
double x, sum = 0.0, curr, prev;
int k = 1, i = 0;
scanf ("%lf", &x);
curr =(deg(i,1) * deg(k,x)) / (double)k;
prev = 0.0;
while (abs(curr - prev) > eps) {
if (i % 2 == 0)
sum += curr;
else
sum -= curr;
i++;
k += 2;
prev = curr;
curr = (deg(i,1) * deg(k,x)) / (double)k;
}
printf ("%lf\n", sum);
}
你确定你没有阶乘?只是由于某种原因,代码中有一个阶乘,这是暗示性的。
如果没有,那么它是这样完成的:
反正切 - 因为这个系列收敛到它......
抱歉,在你身上寻找错误是没有意义的,最好马上更正确、更有效地编写程序。