#include #include int fib_recur (int); int fib_loop (int); int main (int argc, char **argv) { int limit; if (argc < 2) { printf ("USAGE: fib \n"); exit (1); } limit = atoi (argv[1]); printf ("fib recursion: %i\n", fib_recur (limit)); printf ("fib loop: %i\n", fib_loop (limit)); return 1; } int fib_recur (int limit) { if (limit == 0) return 0; if (limit == 1) return 1; if (limit > 1) return fib_recur (limit - 2) + fib_recur (limit - 1); return -1; } int fib_loop (int limit) { int fib_2, fib_1, i, subtotal; if (limit == 0) return 0; if (limit == 1) return 1; fib_2 = 0; fib_1 = 1; i = 1; do { subtotal = fib_2 + fib_1; fib_2 = fib_1; fib_1 = subtotal; ++i; } while (i < limit); return subtotal; }