import java.util.*; class Fib { static public int fibnm1, fibnm2, curr; static public int fibarr[]; static public int Fib1 (int n) { if ((n==1) || (n==2)) return 1; else return (Fib1(n-1) + Fib1(n-2)); } static public int Fib2 (int n) { fibnm2 = 1; fibnm1 = 1; curr = 1; for (int i = 3; i<=n; i++) { curr = fibnm2 + fibnm1; fibnm2 = fibnm1; fibnm1 = curr; } return(curr); } static public int Fib3 (int n) { fibarr[1] = 1; fibarr[2] = 1; for (int i = 2; i<=n; i++) { fibarr[i] = fibarr[i-1] + fibarr[i-2]; } return(fibarr[n]); } static public int Fib4 (int n) { if (fibarr[n] != 0) return fibarr[n]; int result; if ((n==1) || (n==2)) result = 1; else result = Fib4(n-1) + Fib4(n-2); fibarr[n] = result; return result; } public static void main (String args[]) { fibarr = new int[100]; long startTime, finishTime; startTime = System.currentTimeMillis(); System.err.println(Fib1(43)); finishTime = System.currentTimeMillis(); System.err.println( "Elapsed time (milliseconds): " + (finishTime - startTime)); } }