1 / 9

Homework – Chapter 1

Homework – Chapter 1. 作業解答. 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. .

gin
Download Presentation

Homework – Chapter 1

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