/* File: FibObject.java - March 2018 */ package l04; /** * Compute and display the Fibonacci number of the input argument * using a recursive algorithm. The problem with 'double recursion' * is avoided by using a special purpose object which holds a consecutive * pair of Fibonacci numbers. The recursion is actually hidden in the * constructor of a FibPair object! * * Sample usage: java l04.FibObject 10 * * @author Michael Albert * */ public class FibObject{ public static void main(String[] args) { int n = Integer.parseInt(args[0]); System.out.println("Fib(" + n + ") = " + (new FibPair(n)).currFib); } private static class FibPair { long prevFib; long currFib; FibPair(int n) { if (n == 0) { this.prevFib = 0; this.currFib = 1; } else { FibPair prevPair = new FibPair(n-1); this.prevFib = prevPair.currFib; this.currFib = prevPair.currFib + prevPair.prevFib; } } } }