More About Recursion - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

More About Recursion

Description:

Recursion is used when the solution to a problem depends on the ability to break ... The problem with trying to use this nifty math expression is that we need to ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 17
Provided by: SteveC1
Category:
Tags: more | nifty | recursion

less

Transcript and Presenter's Notes

Title: More About Recursion


1
More About Recursion
  • Alice

2
Recursion
  • Recursion is used when the solution to a problem
    depends on the ability to break a problem down
    into smaller and smaller sub-problems.
  • Let's look at an example

3
A Towers Problem
Source Spare
Target (coneFrom) (coneSpare) (coneTo)
  • The challenge is to move all the disks from the
    source cone to the target cone.
  • Move 1 disk at a time
  • A larger disk may never be on top of a smaller
    disk

4
Initial world
  • The disks are instances of the Torus class. (A
    torus is a doughnut shaped object.)
  • Each cone is positioned exactly 1 meter from its
    nearest neighbor.
  • Other than the bottom disk, each disk is
    positioned exactly 0.1 meter above the disk below.

5
Identifying the disks
  • To make it easier to describe our solution, we
    give each disk an id number and a name.

id number name 1 disk1
2 disk2 3 disk3 4
disk4
6
Solving the problem
  • Our solution will use the
  • Principle of wishful thinking
  • assume we could solve a smaller version of the
    same problem
  • if we could solve the smaller version, it would
    make it easier to solve this problem.
  • Base case the simplest possible
    version of this problem, one that can obviously
    be solved.

7
Wishful thinking in practice
Assume I could move 3 of the disks to the spare
cone.
Then I could move the 4th disk (base case) to the
target cone.
8
Storyboard
  • To solve the towers problem, we need to know
    howmany disks we have and which cone is the
    source, the target, and the spare

towers Parameters howmany, source, target,
spare If howmany is equal to 1 move it (the
smallest disk) from the source to the
target Else Do in order call towers to
move howmany-1 disks from source to spare
(using target as spare) move it (disk
howmany) from the source to the target
call towers to move howmany-1 disks
from the spare to the target (using
the source as the spare)
base case move 1 disk
a smaller problem -- recursively move the rest of
the disks
Two recursive calls are used in this method.
9
Moving a disk
  • A challenge in this animation is how to move a
    disk from one tower to another.
  • In the storyboard for the towers method, we
    assumed that we had a method named moveIt that
    would accomplish the task.
  • To write the moveIt method, we need to know
  • What are the parameters to send in to our
    method?
  • What steps need to occur?
  • How high to raise the disk object?
  • How far (forward/back) to move it?

10
moveIt Storyboard
  • The parameters are
  • whichdisk the disk id number
  • fromcone the source cone
  • tocone the target cone
  • A storyboard describing the steps is

moveIt Parameters whichdisk, fromcone,
tocone Do in order Lift the disk
up above the top of the fromcone
Move it (forward or back) to a location above the
tocone Lower the disk down onto the
tocone
11
Demo
  • Ch8Lec2Towers-V1
  • Concepts illustrated in this example
  • The base case is written as an If statement
  • If the base case is not true, then instructions
    are executed to move 1 step closer to the base
    case and the method calls itself.
  • Repeated self-calls eventually work down to the
    base case and the recursion ends.

12
Klutzy
  • The moveIt method contains three sets of nested
    If statements
  • The disk id number is used to determine which
    disk to
  • move up
  • move over
  • move down
  • The code is somewhat klutzy.
  • In other words, the code is not elegant!

13
Using an expression
  • We noticed that the distance each disk has to
    move up (and then back down) is 0.3 meters more
    than 0.1 the id number (whichdisk).
  • We could use an expression to compute the
    distance for the move up and move down
    instructions.
  • move the appropriate disk 0.3 0.1 whichdisk

14
Problem
  • The problem with trying to use this nifty math
    expression is that we need to have the disk's
    name to write a move instruction.
  • For example,
  • disk1 move up
  • must be an object, cannot use the id number here

15
Demo
  • Ch08Lec2Towers-V2
  • Concepts illustrated in this example
  • Condensing the program code to make it more
    elegant may lead to other problems.
  • A conversion function is one that has a
    parameter to receive an argument of one data type
    and return some equivalent value, possibly of a
    different data type.
  • In this example, we wrote our own function to
    convert the disk id number (i) to the disk name

16
Assignment
  • Read Alice Chapter 8 Section 2,
  • A Second Form of Recursion
Write a Comment
User Comments (0)
About PowerShow.com