gin
Uploaded by
9 SLIDES
248 VUES
90LIKES

Recursive vs Non-Recursive Algorithms: Understanding Fibonacci Sequence Generation

DESCRIPTION

This homework assignment covers the Fibonacci sequence generation through both recursive and non-recursive algorithms. It begins with an explanation of Fibonacci numbers, highlighting the relationship between them. Two algorithms are presented: a recursive algorithm (Fibonacci) and a non-recursive version using loops (Fibonacci2). The efficiency of both methods is discussed, focusing on their time and space complexities. The recursive method has higher complexity, making the non-recursive method more efficient. Additional problems related to asymptotic growth rates are also addressed.

1 / 9

Download Presentation
Télécharger la présentation

Recursive vs Non-Recursive Algorithms: Understanding Fibonacci Sequence Generation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Homework – Chapter 1 作業解答

  2. Problem 1 • Given the Fibonacci number as 1 2 3 5 8 13 21 34… where the next Fibonacci number will be the sum of its previous two Fibonacci number. • Example: • The number of 8 is the sum of 3 and 5. • The next number will be 55 since it is the sum of 21 and 34.

  3. Problem 1 • Write a recursive algorithm to generate the Fibonacci number N. int Fibonacci (int N) { if (N <= 2) return N; return Fibonacci(N-1) + Fibonacci(N-2); }

  4. Problem 1 • Write a non-recursive algorithm using loop structure to generate the Fibonacci number N. int Fibonacci2 (int N) { if (N <= 2) return N; Let N1 = 1, N2 = 2, Total = 0; for (i = 3 to N) { Total = N1 + N2; N1 = N2; N2 = Total; } return Total; }

  5. Problem 1 • Discuss the execution efficiency of these two programs. • The process of the recursive Fibonacci() can be illustrated by the following tree structure. • Space complexity of Fibonacci(): • At most N-1 stack frames (the depth of the tree) are pushed into function call stack when Fibonacci() is called. Therefore, the complexity is O(N). • Time complexity of Fibonacci(): • Therefore, the time complexity depends on how many nodes the tree has, which is O(2N).

  6. Space complexity of Fibonacci2(): • Only a fix number of automatic variables are required. Therefore, the complexity is O(1). • Time complexity of Fibonacci2(): • The for-loop runs in N-2 times. Its body perform addition in O(1) for each iteration. Therefore, the total computing time is O(N). • Conclusion: • Fibonacci2() is more efficient than Fibonacci(). Its space complexity and time complexity are relatively lower.

  7. Problem 2 • Ordering by asymptotic growth rates: • log(n!) • 4logn • (n-1)! • n.2n • (logn)logn. • Please write computation!

  8. Solution • log(n!) log(n!) < log(nn) = O(n logn) • 4logn Let S = 4logn logS = log4logn = log22logn = 2logn = logn2 ∴S = n2 = O(n2) • (n-1)! = O(n!) • n.2n <2n.2n = 22n = O(2n) ∴ (A) < (B) < (D) < (C)

  9. Solution • (logn)logn Let S = (logn)logn log S = (logn)(loglogn) = log(nloglogn) S = nloglogn < nlogn < 2n 2n is growing faster than nlogn. ∴ (A) < (B) < (E) < (D) < (C)

More Related
SlideServe
Audio
Live Player
Audio Wave
Play slide audio to activate visualizer