30
ITEC200 – Week07 Recursion

ITEC200 – Week07 Recursion. 2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

  • View
    219

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

ITEC200 – Week07

Recursion

Page 2: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 2

Learning Objectives – Week07Recursion (Ch 07)

Students can:• Design recursive algorithms to solve simple problems involving

strings or mathematical calculations• Construct methods that implement recursive algorithms• Provide traces of recursive methods and describe the flow of

recursive program execution using activation frames • Analyse recursive algorithms and methods for searching arrays• Describe approaches to creating recursive data structures and

make augmentations to them• Analyse recursive approaches to problem solving (Towers of

Hanoi problem, counting blobs, finding a pathway through a maze) and make augmentations to them

Page 3: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 3

Recursive Thinking

• Recursion is a problem-solving approach that can be used to generate simple solutions to certain kinds of problems that would be difficult to solve in other ways

Page 4: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 4

String Length Algorithm

Task: Design a recursive approach for finding the length of a String

public static int length(String str) { if (str == null || str.equals("")) return 0; else return 1 + length(str.substring(1));}

Page 5: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 5

Steps to Design a Recursive Algorithm

• There must be at least one case (the base case), for a small value of n, that can be solved directly

• A problem of a given size n can be split into one or more smaller versions of the same problem (recursive case)

• Recognize the base case and provide a solution to it

• Devise a strategy to split the problem into smaller versions of itself while making progress toward the base case

• Combine the solutions of the smaller problems in such a way as to solve the larger problem

Page 6: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 6

Tracing a Recursive Method

Page 7: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 7

Proving that a Recursive Method is Correct

• Proof by induction– Prove the theorem is true for the base case

– Show that if the theorem is assumed true for n, then it must be true for n+1

• Recursive proof is similar to induction– Verify the base case is recognized and solved correctly

– Verify that each recursive case makes progress towards the base case

– Verify that if all smaller problems are solved correctly, then the original problem is also solved correctly

Page 8: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 8

Recursive Definitions of Mathematical Formulas

• Mathematicians often use recursive definitions of formulas that lead very naturally to recursive algorithms

• Examples include:– Factorial

– Powers

– Greatest common divisor

Page 9: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 9

Recursive Factorial Method

Task: Design a recursive approach for calculating n!( Note: n! = n*(n-1)*(n-2)*…*3*2*1, so 5! = 5*4*3*2*1 = 120 )

Page 10: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 10

Recursion Versus Iteration

• There are similarities between recursion and iteration• In iteration, a loop repetition condition determines

whether to repeat the loop body or exit from the loop• In recursion, the condition usually tests for a base case

Page 11: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 11

Efficiency of Recursion

• Recursive methods often have slower execution times when compared to their iterative counterparts

• The overhead for loop repetition is smaller than the overhead for a method call and return

• If it is easier to conceptualize an algorithm using recursion, then you should usually code it as a recursive method– The reduction in efficiency needs to be weighed up against the

advantage of readable code that is easy to debug

Page 12: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 12

An Exponential Recursive Fibonacci Method

Inefficient!

Page 13: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 13

Recursive Array Search

• Searching an array can be accomplished using recursion

• Simplest way to search is using a linear search• Most efficient way to search is using a binary

search

Page 14: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 14

Algorithm for Recursive Linear Array Search

Page 15: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 15

Algorithm for Recursive Binary Array Search

Page 16: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 16

Algorithm for Recursive Binary Array Search (continued)

Page 17: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 17

Recursive Data Structures

• Recursive data structures are data structures that have a component that is the same data structure

• Computer scientists often encounter data structures that are defined recursively– Linked list can be described as a recursive data structure

– Trees (Chapter 8) are defined recursively

• Recursive methods provide a very natural mechanism for processing recursive data structures

Page 18: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 18

Problem Solving with Recursion - Three Case Studies

Towers of Hanoi

Counting cells in a blob Finding a path through a maze

Page 19: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 19

Towers of Hanoi

•Task: write a program that provides a description of how to move a tower of disks from one pole to another pole, subject to the following constraints:

- Only the top disk on a peg can be moved to another peg

- A larger disk cannot be placed on top of a smaller disk

Page 20: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 20

Towers of Hanoi (continued)

Page 21: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 21

Algorithm for Towers of Hanoi

Page 22: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 22

Algorithm for Towers of Hanoi (continued)

Page 23: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 23

Algorithm for Towers of Hanoi (continued)

Page 24: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 24

Recursive Algorithm for Towers of Hanoi

Page 25: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 25

Implementation of Recursive Towers of Hanoi

Page 26: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 26

Counting Cells in a Blob

Task: calculate the number of adjoining cells of the same colour amongst a collection of cells.

Page 27: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 27

Count-cells Implementation

Page 28: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 28

Finding a pathway through a maze

Task: provide a recursive solution for finding a pathway through a maze

Page 29: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 29

Where to from here…

• Work through Chapter 7 of the Koffman & Wolfgang Text

• Conceptual Questions and Practical Exercises• Submit all preliminary work• Be prompt for your online class

Page 30: ITEC200 – Week07 Recursion.  2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve

www.ics.mq.edu.au/ppdp 30

Acknowledgements

These slides were based upon the Objects, Abstraction, Data Structures and Design using Java Version 5.0 Chapter 7 PowerPoint presentation

by Elliot B. Koffman and Paul A. T. Wolfgang