/* * Program to compute elements of the Fibonacci sequence using loop. * * (more efficient than recursion, but also a little harder to write and * understand?) */ #include long fib(int a); int main(void) { int n; printf("enter n\n"); if (scanf("%d", &n) != 1) { printf("not number\n"); return 1; } printf("fib(%d) is %ld\n", n, fib(n)); return 0; } long fib(int a) { if (a <= 1) { return 1; } long prev1 = 1; /* fib(a-1) */ long prev2 = 1; /* fib(a-2) */ long next; /* compute fib(n) for n = 2 ... a */ for (int n = 2; n <= a; ++n) { next = prev1 + prev2; /* copy fib(a-1) to fib(a-2) */ prev2 = prev1; /* copy fib(a) to fib(a-1) */ prev1 = next; } return next; }