/** * A simple test of inefficient generation of Fibonacci numbers, intended * primarily to compare running times. */ public class Fib { private static final int MAX = 42; private static final long UNINITIALIZED = -1; private static long[] cache; public static void main(String[] args) { System.out.println("Fibonacci number " + MAX + " is: " + newfib(MAX)); } // main(String[]) public static long fib(int n) { if (n < 2) return n; else return fib(n-1) + fib(n-2); } // fib(int) public static long newfib(int n) { // Initialize cache if necessary if ((cache == null) || (cache.length <= n)) { cache = new long[n+1]; for (int i = 2; i <= n; i++) cache[i] = UNINITIALIZED; cache[0] = 0; cache[1] = 1; } if (UNINITIALIZED == cache[n]) cache[n] = newfib(n-1) + newfib(n-2); return cache[n]; } // newfib(int) } // class Fib