// fib.c
//
// Two implementations of the Fibonacci sequence (recursive and iterative).

// Nathan Goulding-Hotta
// UCSD CSE 141/L
// 2012-01-26

// Recursive version
int fib(int N) {
    if (N == 0) return 0;
    if (N == 1) return 1;
    return fib(N-1) + fib(N-2);
}

// Iterative version
int fib_iter(int N) {
    int fib, prev1, prev2;

    if (N == 0) return 0;
    if (N == 1) return 1;

    prev2 = 0;
    prev1 = 1;
    N = N - 1;
    do {
        fib = prev1 + prev2;
        prev2 = prev1;
        prev1 = fib;
        N = N - 1;
    } while (N > 0);

    return fib;
}

void main(void) {
    return;
}

