/* File: FibRec.java - March 2011 */ package l04; /** * Compute and display the Fibonacci number of the input argument * using an improved recursive algorithm. Long values are returned * so that quite large inputs (e.g. 100) are possible. * * Sample usage: java l04.FibRec 5 * * @author Michael Albert * */ public class FibRec{ public static void main(String[] args) { int n = Integer.parseInt(args[0]); System.out.println("Fib(" + n + ") = " + fib(n)); } public static long fib(int n) { return fibHelper(0, 1, n); } // In fibHelper, a and b are always a successive pair of Fibonacci // numbers, and n represents the number of steps remaining until // the answer we want is held in b. public static long fibHelper(long a, long b, int n) { if (n == 0) return b; return fibHelper(b, a+b, n-1); } }