package org.anotheria.moskitodemo.usecases.fibonacci.business; public class FibonacciCalculatorImpl implements IFibonacciCalculator{ private IFibonacciCalculator outerInstance; public long calculateFibonacciNumber(int order) { return order > 2 ? outerInstance.calculateFibonacciNumber(order-1) + outerInstance.calculateFibonacciNumber(order-2) : order == 1 || order == 2 ? 1 : 0 ; } void setOuterInstance(IFibonacciCalculator anInstance){ outerInstance = anInstance; } public static void main(String a[]){ FibonacciCalculatorImpl impl = new FibonacciCalculatorImpl(); for (int i=0; i<=30; i++){ System.out.println("f("+i+") = " +impl.calculateFibonacciNumber(i)); } } }