package recursion;

//Example of an inefficient use of recursion

public class Fibonacci {

    public static long iterFib(long n) {
        if (n <= 1) {
            return n;
        } else {
            long fib = 0;

            long fib_2 = 0;
            long fib_1 = 1;
            for (long i = 2; i <= n; ++i) {
                fib = fib_1 + fib_2;
                fib_2 = fib_1;
                fib_1 = fib;
            }

            return fib;
        }
    }

    public static long recFib(long n) {
        if (n <= 1) {
            return n;
        } else {
            return recFib(n - 1) + recFib(n - 2);
        }
    }

    public static void main(String[] args) {
        for (long n = 0; n < 75; ++n) {
            System.out.println("fib(" + n + ") = " + recFib(n));
        }
    }

}
