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(3 n ) – 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