cs3330 problem set 1_ recursion and complexity analysis _ complete solution

1
10/30/2015 TheAceStudent: CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution data:text/html;charset=utf8,%3Ch3%20class%3D%22posttitle%20entrytitle%22%20itemprop%3D%22name%22%20style%3D%22margin%3A%200px… 1/1 CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution Problem Set 1: Recursion and Complexity Analysis CS3330 Data Structures and Algorithms Overview: For problem 1(a) of this assignment, you will need a C++ compiler. In order to receive credit, your program must compile and run; and you must provide the actual source code file so that I can compile and run your program (e.g. the file you modified ending in .cpp). Examples on how to import existing files into your compiler are provided in the file called Importing Source Code.pdf. The remaining problems for the assignment must be written up within a single Microsoft Word document. You must include your name and course number within all files that you submit, including source code files as a comment at the top of each file that you create or modify. 1. [7 points] Recursion. Read the assigned chapter and notes for Week 1 located in the Learning Activities area in Blackboard. Then provide solutions for the following: (a) [3 points] Download the f.cpp file, then using the definition below, implement the details of a recursive function called f(n). This function can be directly translated into C/C++ from the following mathematical definition: ( 1) 2 1 0 ( 1) 2 1 0 0 0 ( ) f n n n f n n n n f n The function must be implemented based on the mathematical definition provided above. Note: For this program, the function must use recursion. You only need to modify the provided file by adding the necessary code to implement the TODO areas as noted in the comments. Everything else in the program should remain the same. Output: The output for this program once the function is implemented will be as follows: f(44) is 1936 f(20) is 400 f(1) is 1 f(0) is 0 f(1) is 1 f(13) is 169 f(20) is 400 f(50) is 2500 f(44) is 1936 ** Press any key to continue ** (b) [2 points] Briefly explain how the following recursive function could result in an infinite loop and what you could do to correct this: (c) [2 points] Perform an Internet search and provide a brief description (at least a paragraph with four to five sentences) of an example of a practical use for recursion. For example, the practical use you mention should be something other than simple function implementations such as factorial, the power of a number, Fibonacci, etc. The description should be in your own words. Include the reference to your source or sources in APA format at the end of your description. 2. [3 points] Complexity Analysis. Begin by reading the assigned chapter and notes for Week 2 located in the Learning Activities area in Blackboard. Then answer the following questions: (a) [2 points] Briefly explain the difference between bigΩ (Omega) and bigO notation. Also provide the mathematical definitions of each. (b) [1 points] What is the asymptotic complexity (or bigO) of the following code block? Briefly explain why. Note: No programming is necessary for this problem. Just tell me what the bigO of the function, and provide a couple of sentences explaining how you arrived at the solution. for (int i=0; i < n; i++) { for (int j=0; j < n; j++) { a[i][j]=0; for (int k=0; k < n; k++) { a[i][j] += b[i][k] * c[k][j]; } } } Other Notes: Submit your solutions as a single Zip file using the Problem Set 1 link provided in the Assignments area. If you are using the Visual C++ or DevC++ compiler, you should only submit the source code files for your program (the files ending in .cpp and .h). For space reasons, please do not submit the entire Visual C++ or DevC++ project folders. Do not hesitate to ask if you have any questions or need clarification on what to do for this assignment. CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution

Upload: teachertheacestud

Post on 02-Dec-2015

214 views

Category:

Documents


0 download

DESCRIPTION

CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete SolutionCS3330 Problem Set 1: Recursion and Complexity Analysis | Complete SolutionProblem Set 1: Recursion and Complexity Analysis CS3330 Data Structures and Algorithms Overview: For problem 1(a) of this assignment, you will need a C++ compiler. In order to receive credit, your program must compile and run; and you must provide the actual source code file so that I can compile and run your program (e.g. the file you modified ending in .cpp). Examples on how to import existing files into your compiler are provided in the file called Importing Source Code.pdf. The remaining problems for the assignment must be written up within a single Microsoft Word document. You must include your name and course number within all files that you submit, including source code files as a comment at the top of each file that you create or modify. 1. [7 points] Recursion. Read the assigned chapter and notes for Week 1 located in the Learning Activities area in Blackboard. Then provide solutions for the following: (a) [3 points] Download the f.cpp file, then using the definition below, implement the details of a recursive function called f(n). This function can be directly translated into C/C++ from the following mathematical definition: ( 1) 2 1 0 ( 1) 2 1 0 0 0 ( ) f n n n f n n n n f n The function must be implemented based on the mathematical definition provided above. Note: For this program, the function must use recursion. You only need to modify the provided file by adding the necessary code to implement the TODO areas as noted in the comments. Everything else in the program should remain the same. Output: The output for this program once the function is implemented will be as follows: f(-44) is 1936 f(-20) is 400 f(-1) is 1 f(0) is 0 f(1) is 1 f(13) is 169 f(20) is 400 f(50) is 2500 f(44) is 1936 ** Press any key to continue ** (b) [2 points] Briefly explain how the following recursive function could result in an infinite loop and what you could do to correct this: (c) [2 points] Perform an Internet search and provide a brief description (at least a paragraph with four to five sentences) of an example of a practical use for recursion. For example, the practical use you mention should be something other than simple function implementations such as factorial, the power of a number, Fibonacci, etc. The description should be in your own words. Include the reference to your source or sources in APA format at the end of your description. 2. [3 points] Complexity Analysis. Begin by reading the assigned chapter and notes for Week 2 located in the Learning Activities area in Blackboard. Then answer the following questions: (a) [2 points] Briefly explain the difference between big-Ω (Omega) and big-O notation. Also provide the mathematical definitions of each. (b) [1 points] What is the asymptotic complexity (or big-O) of the following code block? Briefly explain why. Note: No programming is necessary for this problem. Just tell me what the big-O of the function, and provide a couple of sentences explaining how you arrived at the solution. for (int i=0; i CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution

TRANSCRIPT

Page 1: CS3330 Problem Set 1_ Recursion and Complexity Analysis _ Complete Solution

10/30/2015 TheAceStudent: CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution

data:text/html;charset=utf­8,%3Ch3%20class%3D%22post­title%20entry­title%22%20itemprop%3D%22name%22%20style%3D%22margin%3A%200px… 1/1

CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution

Problem Set 1: Recursion and Complexity Analysis CS3330 Data Structures and AlgorithmsOverview: For problem 1(a) of this assignment, you will need a C++ compiler. In order to receivecredit, your program must compile and run; and you must provide the actual source code file so thatI can compile and run your program (e.g. the file you modified ending in .cpp). Examples on how toimport existing files into your compiler are provided in the file called Importing Source Code.pdf. Theremaining problems for the assignment must be written up within a single Microsoft Word document.You must include your name and course number within all files that you submit, including sourcecode files as a comment at the top of each file that you create or modify. 1. [7 points] Recursion.Read the assigned chapter and notes for Week 1 located in the Learning Activities area inBlackboard. Then provide solutions for the following: (a) [3 points] Download the f.cpp file, thenusing the definition below, implement the details of a recursive function called f(n). This function canbe directly translated into C/C++ from the following mathematical definition: ( 1) 2 1 0 ( 1) 2 1 0 0 0 () f n n n f n n n n f n The function must be implemented based on the mathematical definitionprovided above. Note: For this program, the function must use recursion. You only need to modifythe provided file by adding the necessary code to implement the TODO areas as noted in thecomments. Everything else in the program should remain the same. Output: The output for thisprogram once the function is implemented will be as follows: f(­44) is 1936 f(­20) is 400 f(­1) is 1 f(0)is 0 f(1) is 1 f(13) is 169 f(20) is 400 f(50) is 2500 f(44) is 1936 ** Press any key to continue ** (b) [2points] Briefly explain how the following recursive function could result in an infinite loop and whatyou could do to correct this: (c) [2 points] Perform an Internet search and provide a brief description(at least a paragraph with four to five sentences) of an example of a practical use for recursion. Forexample, the practical use you mention should be something other than simple functionimplementations such as factorial, the power of a number, Fibonacci, etc. The description should bein your own words. Include the reference to your source or sources in APA format at the end of yourdescription. 2. [3 points] Complexity Analysis. Begin by reading the assigned chapter and notes forWeek 2 located in the Learning Activities area in Blackboard. Then answer the following questions:(a) [2 points] Briefly explain the difference between big­Ω (Omega) and big­O notation. Also providethe mathematical definitions of each. (b) [1 points] What is the asymptotic complexity (or big­O) ofthe following code block? Briefly explain why. Note: No programming is necessary for this problem.Just tell me what the big­O of the function, and provide a couple of sentences explaining how youarrived at the solution. for (int i=0; i < n; i++) for (int j=0; j < n; j++) a[i][j]=0; for (int k=0; k < n;k++) a[i][j] += b[i][k] * c[k][j]; Other Notes: Submit your solutions as a single Zip file using theProblem Set 1 link provided in the Assignments area. If you are using the Visual C++ or Dev­C++compiler, you should only submit the source code files for your program (the files ending in .cpp and.h). For space reasons, please do not submit the entire Visual C++ or Dev­C++ project folders. Donot hesitate to ask if you have any questions or need clarification on what to do for this assignment.

CS3330 Problem Set 1: Recursion and Complexity Analysis | Complete Solution

CS3330 Problem Set 1: Recursion and Complexity Analysis |Complete Solution