计算1-1/x+1/x*x-1/x*x*x.....
计算1-1/x+1/x*x-1/x*x*x.....T(n)=O(n2)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <sys/timeb.h>
void main()
{
timeb t1, t2;
long t;
double x, sum = 1, sum1;
int i, j, n;
printf("请输入x n: ");
scanf("%lf%d", &x, &n);
ftime(&t1);
for (i = 1; i < n; i++)
{
sum1 = 1;
for (j = 1; j <= i; j++)
{
sum1 = sum1 * (-1.0 / x);
}
sum += sum1;
}
ftime(&t2);
t = (t2.time - t1.time) * 1000 + (t2.millitm - t1.millitm);
printf("sum=%lf 用时%ld毫秒\n", sum, t);
}
计算1-1/x+1/x*x-1/x*x*x.....更快捷的算法 T(n)=O(n)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <sys/timeb.h>
void main()
{
timeb t1, t2;
long t;
double x, sum1 = 1, sum = 1;
int i, n;
printf("请输入x n: ");
scanf("%lf%d", &x, &n);
ftime(&t1);
for (i = 1; i <= n; i++)
{
sum1 *= -1.0 / x;
sum += sum1;
}
ftime(&t2);
t = (t2.time - t1.time) * 1000 + (t2.millitm - t1.millitm);
printf("sum=%lf 用时%ld毫秒\n", sum, t);
}
其中用时与计算机的配置有关
当输入数据一样时,计算结果是一样的,但运行时间的差别很大,在算法正确的前提下,应该选择算法效率高的!