- 论坛徽章:
- 0
|
:em12:
试编写程序求一元多项式a0+a1*(1+x)+a2*(1+x+x^2)+a3*(1+x+x^2+x^3)... 的值 ,并确定算法中每一语句的执行次数和整个程序的时间复杂度. 注意选择你认为较好的输入和输出方法. 本题的输入为 (i=0,1…,n), 和n输出为 .
复杂性计算要求有证明过程(归纳法证明), 程序中插入时间测试,并得出结果.
++++++++++++++++
我的做法如下
++++++++++++++++
int p(int n,int x)
{
int s=a[0]+a[1]*(1+x),t=1+x,i,y;
if (n=0)
return(s=a[0]);
else if (n=1)
return(s);
else
{
for(i=2;i<n;i++)
{
x=x*x;
t=x+t;
y=t*a;
s=s+y;
}
return(s);
}
}
我的问题
1、是:复杂性计算要求有证明过程(归纳法证明),怎么证法??
我得理解是:O(n)=5n-14(只看i从2=>;n-1的那段for loop),可是当n=2时,O(n)=-4!?莫名其妙,不知其所以然。
2、程序中插入时间测试,就是调用clock函数,可是调用完得出的时间居然是0.000000!!!这个又是怎么回事?
该函数用法如下:
函数名: clock
功 能: 确定处理器时间
用 法: clock_t clock(void);
程序例:
#include <time.h>;
#include <stdio.h>;
#include <dos.h>;
int main(void)
{
clock_t start, end;
start = clock();
delay(2000);
end = clock();
printf("The time was: %f\n", (end - start) / CLK_TCK);
return 0;
}
大家帮忙看看吧,谢谢了! |
|