In: Computer Science
The Fibonacci sequence is the series of integers
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 . . .
See the pattern? Each element in the series is the sum of the preceding two elements. Here is a recursive formula for calculating the nth number of the sequence:
Fib(N) = {N, if N = 0 or 1
Fib(N - 2) + Fib(N - 1), if N > 1
a) Write a recursive method fibonacci that returns the nth Fibonacci number when passed the argument n.
b) Write a non recursive version of the method fibonacci.
c) Write a driver to test your two versions of the method fi‐
bonacci.
d) Compare the recursive and iterative versions for
efficiency.
(Use words, not O( ) notation.)
Use Java programming.
//Fibonacci.java import java.util.Scanner; public class Fibonacci { public static int FibR( int n){ if(n == 0){ return 0; } if(n == 1){ return 1; } else{ return FibR(n-1) + FibR(n-2); } } public static int FibI( int n){ int a = 0,b = 1,c = 1; if(n == 0){ return a; } if(n == 1){ return b; } else{ while(n>1){ c = a + b; a = b; b = c; n--; } return c; } } public static void main(String args[]){ Scanner scanner = new Scanner(System.in); int n; System.out.println("Input an integer for the index of a term in the Fibonacci sequence:"); n = scanner.nextInt(); System.out.println("\nthe "+(n)+"-th term \""+FibR(n)+"\" in the Fibonacci sequence can be computed recursively."); System.out.println("the "+(n)+"-th term \""+FibI(n)+"\" in the Fibonacci sequence can be computed recursively."); } }
Time complexity of recursive version is O(2^n) Time complexity of iterative version is O(n)