package com.interview.dynamic; /** * Date 03/28/2015 * @author tusroy * * Fibonacci series * Given a number find the fibonacci series value for that number * e.g n = 3 -> 3 * n = 4 -> 5 * n = 5 -> 8 * * Solution * Recursively it can calculated very easily by f(n) = f(n-1) + f(n-2) * For Dp version we do not recalculate f(n-1) and f(n-2) but keep it in a and b * * Test cases * 1) Negative number * 2) 0 * 3) 1 * 4) Very high number * */ public class FibonacciSeries { /** * DP version where we do not recalculate values but just keep last 2 * calculate values */ public int fibonacciSeries(int n){ int n1 = 0, n2 = 1; int sum; if (n == n1 || n == n2) { return n; } for(int i=2; i <= n; i++){ sum = n1 + n2; n1 = n2; n2 = sum; } return n2; } /** * Recursive and slow version. Recalculates same value over and over again. * Chokes for n greater than 60 */ public int fibonacciSeriesRecursive(int n){ if(n == 1 || n == 0){ return n; } return fibonacciSeriesRecursive(n-1) + fibonacciSeriesRecursive(n-2); } public static void main(String args[]){ FibonacciSeries fs = new FibonacciSeries(); System.out.println(fs.fibonacciSeries(15)); System.out.println(fs.fibonacciSeriesRecursive(15)); } }