Question: ///// Implement Fibonacci Sequence ///// package main.java; import java.math.BigInteger; public class Fibonacci { // naive public static long recursiveFibonacci(int n) { // if n <

///// Implement Fibonacci Sequence /////

package main.java;

import java.math.BigInteger;

public class Fibonacci { // naive public static long recursiveFibonacci(int n) { // if n < 0: throw new Exception

// if (n < = 1);

// return n

// return naive(n-1) + naive(n-2) return -1; }

// efficient public static long arrayFibonacci(int n) { // if n < 0: throw new Exception // if n <= 1;

// return n

// arr[0] = 0

// arr[1] = 1

// for i from 2 to n:

// arr[i] = arr[i-1] + arr[i-2]

// End for

// Return arr[n]

return -1; }

public static void main(String[] args) { int startingNumber = 43; for (int i = 0; i < 6; i++) { System.out.println("--------n = " + (startingNumber+i) + "--------"); long start = System.nanoTime(); long fib = recursiveFibonacci(startingNumber+i); long stop = System.nanoTime(); long timeElapsed = (stop - start) / 1_000_000_000; System.out.println(" naive: " + timeElapsed + "seconds");

long start2 = System.nanoTime(); long fib2 = arrayFibonacci(startingNumber+i); long stop2 = System.nanoTime(); long timeElapsed2 = (stop2 - start2) / 1_000; System.out.println(" efficient: " + timeElapsed2 + "microseconds");

if (fib == fib2) { System.out.println(" fibonacci number: " + fib); } else { System.err.println("!!!! The naive algorithm and the efficient algorithm produced two different numbers: " + fib + " and " + fib2); System.exit(1); }

System.out.println("----------------------"); }

} }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!