Question

The following is a correct implementation of a non-recursive method to find the nth Fibonacci number...

The following is a correct implementation of a non-recursive method to find the nth Fibonacci number in Java:

public static long fib(int n){

   long[ ] fibNums = new long[n + 1];

   fibNums[0] = 0;

   finNums[1] = 1;

   for(int i = 2; i <= n; i++){

      fibNums[i] = fibNums [i - 1] + finBums[i - 2];

}

return fibNums[n];

}

I am having trouble understanding the code. Why the creation of the long array make this code works and why you have to make it [n+1]? How is the for loop working here (I particularly have problem understanding the body and why returning fibNums[n] gives me the right answer)

Thank you.

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Answer:

As we know that fibonacci series is as follows

0,1,1,2,3,5,8,13,21,34, 55, 89, 144…………

It is basically sum of previous number and current number

Here we first give 2 seed values F0 = 0, F1 = 1

Fn = Fn-1 + Fn-2

The Solution given here is a dynamic programming approach.

1. We have to create an array with n+1 size to handle 0th case.

I.e. to store the elements 0 to n

2. Here the loop is adding previous two values into the array that we have created.

for(int i=2;i<=n;i++){   

     fibNums[i] = fibNums [i-1] + fibNums[i-2];

}

iteration 1: i = 2

fibNums[2] = fibNums[2-1] + fibNums[2-2]

fibNums[2] = fibNums[1] + fibNums[0]

So now fibNums[2] = 1 + 0 = 1

Now i++ so i =3

iteration 2: i = 3

fibNums[3] = fibNums[3-1] + fibNums[3-2]

fibNums[3] = fibNums[2] + fibNums[1]

So now fibNums[3] = 1 + 1 = 2

Now i++ so i =4

iteration 3: i = 4

fibNums[4] = fibNums[4-1] + fibNums[4-2]

fibNums[4] = fibNums[3] + fibNums[2]

So now fibNums[4] = 2 + 1 = 3

Now i++ so i =5

iteration 4: i = 5

fibNums[5] = fibNums[5-1] + fibNums[5-2]

fibNums[5] = fibNums[4] + fibNums[3]

So now fibNums[5] = 3 + 2 = 5

Now i++ so i = 6

The iterations will continue till the i value become n value.

Suppose n value is 5, then return fibNums[n] values returns the required nth febinocci number.

I.e. fibNums[5] = 5.

The Full code and result screenshot has been attached below.

Add a comment
Know the answer?
Add Answer to:
The following is a correct implementation of a non-recursive method to find the nth Fibonacci number...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Complete java program below. Complete non-recursive version nthFibonacciWithLoop() method. Complete recursive version nthFibonacciWithRecursion() method. public class...

    Complete java program below. Complete non-recursive version nthFibonacciWithLoop() method. Complete recursive version nthFibonacciWithRecursion() method. public class Fibonacci { // Fib(N): N N = 0 or N = 1 // Fib(N-1) + Fib(N-2) N > 1 // For example, // Fib(0) = 0 // Fib(1) = 1 // Fib(2) = Fib(1) + Fib(0) = 1 + 0 = 1 // Fib(3) = Fib(2) + Fib(1) = Fib(2) + 1 = (Fib(1) + Fib(0)) + 1 = 1 + 0 + 1...

  • 1.Take this recursive Fibonacci implementation and convert it into the caching based version discussed in class....

    1.Take this recursive Fibonacci implementation and convert it into the caching based version discussed in class. Implement your caching to store a maximum of 5 values. Create 2 variations: one that stores all values and one that only stores even values. Make sure that you don't leave any gaps in your cache — if you have 5 cache entries you must cache 5 unique and valid values. Compare the caching implementations to the recursive implementation using the time utility. How...

  • For the following recursive implementation of a method to compute the Fibonacci S integer n, circle...

    For the following recursive implementation of a method to compute the Fibonacci S integer n, circle the line number(s) the them: s) that comprise the three parts of a recursive algorithm and label 1. public static long fibonacci(int n) ( 2 if( 1) 3. return 1; 4. else if (n 2) S. return; 6. else 7. (long fibNminus1 fibonacci(n - 1); 8. long fibNminus2- fibonacci(n -2); 9. long fibN fibNminusl + fibNminus2; 10. return fibN; 12.)

  • Write a program in MIPs Assembly Language to compute nth number of a fibonacci number sequence....

    Write a program in MIPs Assembly Language to compute nth number of a fibonacci number sequence. Your program should prompt for an integer input n from the user. The program should call a recursive function to compute the nth fibonacci number. Your program must follow programming convention. You should submit program and screenshot of output in a single word/pdf file. You should use following recursive definition of fibonacci function: fib(0) = 0 fib(1) = 1 fib(n) = fib(n-1) +fib(n-2)

  • Read the following code, threaded recursive calculation of Fibonacci number of n: #include <stdio.h> #include <stdlib.h>...

    Read the following code, threaded recursive calculation of Fibonacci number of n: #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *fib(void *arg); int main(int argc, char **argv){     int n = atoi(argv[1]);     printf("%d\n", (int)fib(n)); } void *fib(void *arg){     int n;     pthread_t thread1;     pthread_t thread2;     void *a;     void *b;     int c;     n = (int)arg;     if (n <= 0) return 0;     if (n == 1) return 1;     pthread_create(&thread1, NULL, fib, n-1);    ...

  • The ­following Implementation of the Fibonacci function is a correct, but inefficient, def fibonacci(n): if n...

    The ­following Implementation of the Fibonacci function is a correct, but inefficient, def fibonacci(n): if n <= 2: return 1 else: return fib(n - 1) + fib(n - 2) In more details, the code shown runs very slowly for even relatively small values of n; it can take minutes or hours to compute even the 40th or 50th Fibonacci number. The code is inefficient because it makes too many recursive calls. It ends up recomputing each Fibonacci number many times....

  • Let’s work together to develop a call tree for the execution of the following recursive method....

    Let’s work together to develop a call tree for the execution of the following recursive method. (The method allows us to recursively generate the nth integer in the Fibonacci sequence, although you don’t need to be familiar with that sequence to understand this problem.) public static int fib(int n) { if (n == 0 || n == 1) { return 1; } else { int prev1 = fib(n - 2); int prev2 = fib(n - 1); return prev1 + prev2;...

  • Extra Credit - Fibonacci Function (Lec. 5 topic: Recursive function and runtime stack. Use recursion to...

    Extra Credit - Fibonacci Function (Lec. 5 topic: Recursive function and runtime stack. Use recursion to calculate the Fibonacci Function 1.) Use a recursive function called fib() to calculate the Fibonacci Function for the following values for the variable n. int n = 10; int n = 20; int n = 30; int n = 40; int n = 45; int n = 46; 2.) In addition to calculating and displaying the results, use a "timer" to see how long...

  • CMPS 290 Programming Assignment Arrays and Recursion – Fibonacci Numbers In this programming assignment you will...

    CMPS 290 Programming Assignment Arrays and Recursion – Fibonacci Numbers In this programming assignment you will be working with arrays and multiple function calls, including a recursive function call. The goal of the assignment will be to, using a pre-set array of sequence numbers, calculate the Fibonacci sequence number for each value in the array (see the example at the bottom if this isn’t clear). Instructions and Requirements: • Create a program that assembles and runs to find the correct...

  • Using java programming. Question 1. Write a recursive function fibo(n) that returns the nth Fibonacci number...

    Using java programming. Question 1. Write a recursive function fibo(n) that returns the nth Fibonacci number which is defined as follows: fibo(0) = 0 fibo(1) = 1 fibo(n) = fibo(n-1) + fibo(n-2) for n >= 2 Question 2. Write a recursive function that calculates the sum of quintics: 1power of5 + 2power of5 + 3power of5 + … + n5 Question 3. Write a program to find a route from one given position to another given position for the knight...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT