计算1- 1/x + 1/x*x.. 运行的时间,当然用时与计算机的配置有关。
算法一的时间复杂度T(n) = O(n)
算法二的时间复杂度T(n) = O(n²)
以下为三种求法,实则两种1、用timeb结构体和ftime()函数 2、用clock(), clock_t 在time.h头文件中实际是
#ifndef _CLOCK_T_DEFINED
#define _CLOCK_T_DEFINED
typedef long clock_t;
#endif
#include <stdio.h>
#include <sys/timeb.h>
int main()
{
struct timeb start, end;
int x, n;
float sum = 1, sum1 = 1;
scanf("%d %d", &x, &n);
ftime(&start);
/* 算法一
for (int i = 1; i <= n; i++){
sum1 *= -1.0 / x;
sum += sum1;
}
*/
for (int i = 1; i <=n; i++){
sum1 = 1;
for (int j = 1; j <= i; j++){
sum1 *= -1.0 / x;
}
sum += sum1;
}
ftime(&end);
long t = (end.time - start.time)*1000 + (end.millitm - start.millitm);
printf("%f\n", sum);
printf("用时%ld毫秒", t);
return 0;
}
#include <stdio.h>
#include <time.h>
int main()
{
clock_t start, end;
int x, n;
float sum = 1, sum1 = 1;
scanf("%d %d", &x, &n);
/* 算法一
for (int i = 1; i <= n; i++){
sum1 *= -1.0 / x;
sum += sum1;
}
*/
start = clock();
for (int i = 1; i <=n; i++){
sum1 = 1;
for (int j = 1; j <= i; j++){
sum1 *= -1.0 / x;
}
sum += sum1;
}
end = clock();
long t = (double)(end - start);
printf("%f\n", sum);
printf("用时%ld毫秒", t);
return 0;
}
//c++
#include <bits/stdc++.h>
using namespace std;
int main()
{
clock_t start, end;
int x, n;
float sum = 1, sum1 = 1;
scanf("%d %d", &x, &n);
/*算法一
for (int i = 1; i <= n; i++){
sum1 *= -1.0 / x;
sum += sum1;
}
*/
start = clock();
for (int i = 1; i <=n; i++){
sum1 = 1;
for (int j = 1; j <= i; j++){
sum1 *= -1.0 / x;
}
sum += sum1;
}
end = clock();
cout<<"sum="<<sum<<endl;
cout<<"用时"<< (double)(end - start)<<"毫秒"<<endl;
return 0;
}