1 / 35

Visual C++ Programming: Concepts and Projects

Visual C++ Programming: Concepts and Projects. Chapter 10A: Recursion (Concepts). Objectives. In this chapter, you will: Discover how to recognize a recursive problem Code a recursive method Use recursion to draw fractal images Analyze recursion Create and code menus. Factorial Numbers.

melva
Télécharger la présentation

Visual C++ Programming: Concepts and Projects

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. Visual C++ Programming: Concepts and Projects Chapter 10A: Recursion (Concepts)

  2. Objectives In this chapter, you will: • Discover how to recognize a recursive problem • Code a recursive method • Use recursion to draw fractal images • Analyze recursion • Create and code menus Programming with Visual C++

  3. Factorial Numbers • Factorial numbers • Example: 5! = 5 x 4 x 3 x 2 x 1 • Can be easily computed using a loop Programming with Visual C++

  4. Factorial Numbers (continued) • Factorial numbers • Can also be computed as separate steps from the bottom up • Solving the problem from the bottom up will lead us to a new solution strategy called recursion Programming with Visual C++

  5. Recursion • Recursion • Refers to re-occurring events of a similar nature • Mathematical example: factorial numbers • Everyday example: a chain of phone calls • A problem (finding an apartment) must be solved by a chain of similar events (phone calls) • The events repeat themselves until an answer is obtained • The answer follows the same path back Programming with Visual C++

  6. Recursion (continued) Programming with Visual C++

  7. Recursion (continued) Programming with Visual C++

  8. Recursion • Recursive solutions • Have a recursive case • A call to continue the same operation at another level • Have a base case • A stopping point • Use backtracking • To go back to the previous operation at a higher level Programming with Visual C++

  9. Recursion (continued) • Algorithm for computing factorial numbers Programming with Visual C++

  10. Recursion (continued) Programming with Visual C++

  11. Recursion (continued) Programming with Visual C++

  12. Recursion (continued) • Recursion and factorial numbers • Recursive definition of a factorial number (n!) • For all positive integers n, n! is defined as follows • If n = 0 or 1, then n! = 1 (this is the base case) • If n > 1, then n! = n x (n-1)! (this is the recursive case) Programming with Visual C++

  13. Recursion (continued) • Recursive definitions can be translated easily into recursive methods • Example: Factorial()method Programming with Visual C++

  14. Recursion (continued) Programming with Visual C++

  15. Recursion (continued) Programming with Visual C++

  16. Recursion vs. Iteration • Iteration is usually faster • Does not require background overhead to keep track of each method call • Recursion is more elegant • More closely matches the mathematical definition of the operation it is performing • Recursion can more easily solve some problems • Example: generating fractal images Programming with Visual C++

  17. Recursion vs. Iteration (continued) Programming with Visual C++

  18. Creating Fractal Images • Draw a line • Then draw three lines half the size (at 90 degree angles to one another) from the end of the line you just drew • Apply this strategy recursively to every line you draw • Do this until you have reached a predetermined stopping point (the base case) • Example: recursive crosses Programming with Visual C++

  19. Creating Fractal Images (continued) Programming with Visual C++

  20. Creating Fractal Images (continued) Programming with Visual C++

  21. Creating Fractal Images (continued) Programming with Visual C++

  22. Creating Fractal Images (continued) Programming with Visual C++

  23. Creating Fractal Images (continued) Programming with Visual C++

  24. Creating Fractal Images (continued) Programming with Visual C++

  25. Computer-Generated Fractal Images • Drawing lines with Graphics class method DrawLine() • Use DrawLine() to create a line • Parameters • Pen • x1, y1 (coordinates of the start of the line) • x2, y2 (coordinates of the end of the line) Programming with Visual C++

  26. Computer-Generated Fractal Images (continued) • The starting coordinates of the line are (x, y) • The ending coordinates are (newX, newY) • In a recursive solution, there are many levels of line-drawing tasks • The coordinates of the end of the previous line become the coordinates of the starting point of the next one Programming with Visual C++

  27. Recursive DrawBranch() Method Programming with Visual C++

  28. Recursive DrawBranch() Method (continued) • DrawBranch()is recursive • Each level of recursion draws three new lines from the end of the previous one • The DrawBranch() method is called three times to do this • The base case is the last level of recursion Programming with Visual C++

  29. Recursive DrawBranch() Method (continued) Programming with Visual C++

  30. Recursive DrawBranch() Method (continued) Programming with Visual C++

  31. Recursive DrawBranch() Method (continued) • Algorithm for method DrawBranch() Programming with Visual C++

  32. Recursive DrawBranch() Method (continued) • A single branch with five levels of recursion looks like a pattern of crosses • You will develop a program in the Tutorial to implement this Programming with Visual C++

  33. Recursive DrawBranch() Method (continued) Programming with Visual C++

  34. Summary • Recursion involves a method calling itself • Recursive methods must have: • A base case • A recursive case • Recursive backtracking • After the base case is reached, the method returns to the previous one • Backtracking continues until the program returns to the original method call Programming with Visual C++

  35. Summary (continued) • Some problems have easy and elegant recursive solutions • Tasks with mathematically inductive definitions are naturally recursive • Example: factorial numbers • Example: fractal images Programming with Visual C++

More Related