int fib(int n,int a,int b){
if (n==2){
return a+b;
}
return fib(n-1,b,a+b);
}
int main() {
time_t begin,end;
begin = clock();
fib(10000,0,1);
end = clock();
printf("%f",difftime(end,begin));
}
int main() {
time_t begin,end;
time(&begin);
fib(10000,0,1);
time(&end);
printf("%f",(double)(end-begin)/CLOCKS_PER_SEC);
}
1)第一个问题
为什么我的第一个主要给我打印时间288.000000
,我假设这是288毫秒,但在文档中它应该在几秒钟内给我结果。顺便说一下,我在Mac上。 / p>
2)第二个问题
为什么第二个主要。
为什么打印输出时间为0.000000
。
我知道time()给了我一个time_t结构,我把它放在begin
和end
time_t
结构中,然后我找到了几秒钟的差异,似乎没有效果。
答案 0 :(得分:0)
是的,我想在两个不同时间之间以秒为单位获得差异。
您可以尝试以下方法:
#include <stdio.h>
#include <time.h>
void timeCheck(int *clock,int *minutes){
int hour ;
int minute ;
time_t end, start;
double diff;
size_t seconds;
start = (time_t)((clock[0] * 60 + clock[1]) * 60) ;
end = (time_t)((minutes[0] * 60 + minutes[1]) * 60) ;
if( end < start ){
end += 24 * 60 * 60 ;
}
diff = difftime(end, start);
hour = (int) diff / 3600;
minute = (int) diff % 3600 / 60;
printf("The difference is %d:%d\n", hour, minute);
seconds = (size_t)(hour * 3600) + (size_t)(minute * 60);
printf("Seconds = %zu\n",seconds);
}
int main(void) {
int hour[] = {22,20};
int minutes[] = {5,40};
printf("Start time %d:%d\n",hour[0],hour[1]);
printf("End time %d:%d\n\n",minutes[0],minutes[1]);
timeCheck(hour,minutes);
return 0;
}
输出:
Start time 22:20 End time 5:40
The difference is 7:20
Seconds = 26400
答案 1 :(得分:0)
clock()
的返回类型为clock_t
- 不一定是秒。 Apple : clock。它衡量CPU使用的滴答数(CLOCKS_PER_SEC
)。该值不一定是毫秒或秒。
time()
返回自特定时间点(1970年1月1日)以来的整秒数。
因此,快速连续两次调用时间会产生相同的整秒数。
difftime
期望time_t
(从time()
返回类型)作为其参数,并创建一个已用时间(以秒为单位)。
因此,调用clock_t
值是不正确的。