recursion n. See recursion. See also tail recursion. - The Jargon Dictionary, v. 4.2.2
Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)
-
Upload
daniela-douglas -
Category
Documents
-
view
235 -
download
0
description
Transcript of Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)
Visual C++ Programming: Concepts and Projects
Chapter 10B: Recursion (Tutorial)
Tutorial: Generating a Fractal Image
• Problem Analysis– This project uses the recursive DrawBranch()
method– The result will be an interface upon which one
branch, with its recursive subbranches, is drawn– On Your Own tasks will allow more options– The program can easily be developed to have four
central branches
Programming with Visual C++ 2
Problem Analysis
Programming with Visual C++ 3
Design
• Interface– Menus are created using the MenuStrip control– Menu items are named after the text they contain– If the text is numeric, the menu item names
default to numbered order– Menus control stopping the program and setting
the maximum levels of recursion
Programming with Visual C++ 4
Design (continued)
Programming with Visual C++ 5
Design (continued)
Programming with Visual C++ 6
Design (continued)
Programming with Visual C++ 7
Design (continued)
Programming with Visual C++ 8
• Each menuItem requires a Click() event
Design (continued)
Programming with Visual C++ 9
• Instance variables
Design (continued)
Programming with Visual C++ 10
• Required Graphics and Drawing objects
Design (continued)
Programming with Visual C++ 11
• Data table for DrawBranch()
Design (continued)
Programming with Visual C++ 12
• Algorithms– For menu items that set maxLevels
Design (continued)
Programming with Visual C++ 13
• Algorithm for DrawFractal()
Design (continued)
Programming with Visual C++ 14
• Algorithm for method DrawBranch()
Design (continued)
Programming with Visual C++ 15
Design (continued)
Programming with Visual C++ 16
Design (continued)
Programming with Visual C++ 17
Design (continued)
Programming with Visual C++ 18
Design (continued)
Programming with Visual C++ 19
Design (continued)
Programming with Visual C++ 20
Design (continued)
Programming with Visual C++ 21
Development
• Create the interface– Menus• The menuStrip control is used to add menuStrip
features to the program• The “Type here” labels indicate where menu headings
and items can be created
Programming with Visual C++ 22
Development (continued)
Programming with Visual C++ 23
Development (continued)
• Menus– Menu headings are placed at the top level of each
menu– Menu items are listed below
Programming with Visual C++ 24
Development (continued)
Programming with Visual C++ 25
Development (continued)
Programming with Visual C++ 26
Development (continued)
• Declare instance variables and objects
Programming with Visual C++ 27
Development (continued)
• Initialization in Form1_Load()
Programming with Visual C++ 28
Development (continued)
• Coding the Exit menu
Programming with Visual C++ 29
Development (continued)
• Coding the level menu items
Programming with Visual C++ 30
Development (continued)
Programming with Visual C++ 31
Development (continued)
• Coding DrawFractal()
Programming with Visual C++ 32
Development (continued)
• Calling DrawBranch()
Programming with Visual C++ 33
Development (continued)
Programming with Visual C++ 34
Testing
• Demonstrate that each level works correctly• Demonstrate that the Exit menu works
Programming with Visual C++ 35
Testing (continued)
Programming with Visual C++ 36
Analysis
• The number of recursive calls is factorial• The number of executions of DrawBranch() is O(3n)– n is maxLevels-1
• This program would demand considerable resources to complete a drawing involving a high number of levels
Programming with Visual C++ 37
Analysis (continued)
Programming with Visual C++ 38
On Your Own
• More central branches– Add three more central branches
• Add an angle menu– Varying the angle produces different fractal
images
Programming with Visual C++ 39
On Your Own (continued)
Programming with Visual C++ 40
On Your Own (continued)
Programming with Visual C++ 41