Skip to content

Instantly share code, notes, and snippets.

@meghakrishnamurthy
Created July 5, 2016 07:49
Show Gist options
  • Save meghakrishnamurthy/331bd9addab3dbb1b6a23802b1c6845e to your computer and use it in GitHub Desktop.
Save meghakrishnamurthy/331bd9addab3dbb1b6a23802b1c6845e to your computer and use it in GitHub Desktop.
Fibonacci - Recursive and Iterative implementation in Java
package megha.codingproblems.general;
/**
* Fibonacci program - Both iterative and recursive versions
* Fibonacci series - 1,1,2,3,5,8,13....
*
* @author megha krishnamurthy
*
*/
public class Fibonacci {
/**
* Iterative implementation for nth fibonacci number
* Time complexity - O(n)
* Space complexity - O(1)
*
* @param n
* @return
*/
public int fibonacciIterative(int n) {
if(n <= 1) {
return n;
}
int fib = 1;
int prevFib = 1;
for(int i=2; i<n; i++) {
int temp = fib;
fib+= prevFib;
prevFib = temp;
}
return fib;
}
/**
* Recursive implementation for nth fibonacci number
* Time complexity - O(n)
* Space complexity - O(n)
*
* @param n
* @return
*/
public int fibonacciRecursive(int n) {
if(n <= 1) {
return n;
}
return fibonacciRecursive(n-1) + fibonacciRecursive(n-2);
}
public static void main(String args[]) {
Fibonacci fib = new Fibonacci();
System.out.println("Iterative version:");
System.out.println(fib.fibonacciIterative(5));
System.out.println(fib.fibonacciIterative(10));
System.out.println(fib.fibonacciIterative(20));
System.out.println(fib.fibonacciIterative(30));
System.out.println("Recursive version:");
System.out.println(fib.fibonacciRecursive(5));
System.out.println(fib.fibonacciRecursive(10));
System.out.println(fib.fibonacciRecursive(20));
System.out.println(fib.fibonacciRecursive(30));
}
}
@jasonfilippou
Copy link

The recursive implementation's time complexity is about O(1.6^n), to be somewhat more precise. Still exponential, still untenable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment