代码片段(1)
[代码] 代码中的计时只是粗略值
01 | #include <stdio.h> |
02 | #include <time.h> |
03 |
04 | long fib_iter( int n); |
05 | long fib_cur( int n); |
06 |
07 | static long COUNT = 0; |
08 |
09 | int main(){ |
10 | clock_t c_start, c_end; |
11 | int n; |
12 | printf ( "Input a number: " ); |
13 | scanf ( "%d" , &n); |
14 | c_start = clock (); |
15 | long fib_iter_result = fib_iter(n); |
16 | c_end = clock (); |
17 | printf ( "Iter: %ld, time elapsed: %ld\n" , fib_iter_result, (c_end - c_start) / CLOCKS_PER_SEC); |
18 |
19 | c_start = clock (); |
20 | long fib_cur_result = fib_cur(n); |
21 | c_end = clock (); |
22 | printf ( "Cur f(3): %ld\n" , COUNT); |
23 | printf ( "Cur: %ld, time elapsed: %ld\n" , fib_cur_result, (c_end-c_start) / CLOCKS_PER_SEC); |
24 | return 0; |
25 | } |
26 |
27 | long fib_cur( int n){ |
28 | if (n == 3) |
29 | COUNT++; |
30 | if (n <= 2) |
31 | return 1; |
32 | return fib_cur(n - 1) + fib_cur(n - 2); |
33 | } |
34 |
35 | long fib_iter( int n){ |
36 | long old = 1; |
37 | long now = 1; |
38 | long result; |
39 | while (n > 2){ |
40 | result = old + now; |
41 | old = now; |
42 | now = result; |
43 | n--; |
44 | } |
45 | return result; |
46 | } |