0% found this document useful (0 votes)
155 views

Chapter 11 Recursion PDF

Uploaded by

Girma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
155 views

Chapter 11 Recursion PDF

Uploaded by

Girma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

Recursion

Chapter 11

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Objectives
•  Describe the concept of recursion
•  Use recursion as a programming tool
•  Describe and use recursive form of
binary search algorithm
•  Describe and use merge sort algorithm

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Basics of Recursion: Outline
•  Basics of Recursion
•  Case Study: Digits to Words
•  How Recursion Works
•  Infinite Recursion
•  Recursive versus Iterative Methods
•  Recursive Methods that Return a Value

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Basics of Recursion
•  A recursive algorithm will have one
subtask that is a small version of the entire
algorithm's task
•  A recursive algorithm contains an
invocation of itself
•  Must be defined correctly else algorithm
could call itself forever or not at all

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Simple Example - Countdown
•  Given an integer value num output all the
numbers from num down to 1
•  Can do this easier and faster with a loop;
the recursive version is an example only
•  First handle the simplest case; the base
case or stopping condition

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Recursive Countdown
•  Next handle larger cases; phrase solution
in terms of a smaller version of the same
problem
•  countDown(3) is to output 3 then output
the result of countDown(2)

View demonstration, listing 11.1


class RecursionCountdown

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Sequence of
Calls
countDown(3)

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  Digits to Words – consider a method which
receives an integer parameter
§  Then it prints the digits of the number as
words
•  Heading

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  Consider this useful private method

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  If number has multiple digits, decompose
algorithm into two subtasks
1.  Display all digits but the last as words
2.  Display last digit as a word
•  First subtask is smaller version of original
problem
§  Same as original task, one less digit

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  Algorithm for
displayAsWords(number)
1. displayAsWords (number after deleting
last digits)
2. System.out.print
(getWordFromDigit(last digit of number
+ " ")

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  View demonstration, listing 11.2
class RecursionDemo
Sample
screen
output

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
How Recursion Works
•  Figure 11.2a Executing recursive call

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
How Recursion Works
•  Figure 11.2b Executing recursive call

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
How Recursion Works
•  Figure 11.2c Executing recursive call

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Keys to Successful Recursion
•  Must have a branching statement that
leads to different cases
•  One or more of the branches should have
a recursive call of the method
§  Recursive call must us "smaller" version of the
original argument
•  One or more branches must include no
recursive call
§  This is the base or stopping case
JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Infinite Recursion
•  Suppose we leave out the stopping case

•  Nothing stops the method from repeatedly


invoking itself
§  Program will eventually crash when computer
exhausts its resources (stack overflow)

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Recursive Versus Iterative
•  Any method including a recursive call can be
rewritten
§  To do the same task
§  Done without recursion
•  Non recursive algorithm uses iteration
§  Method which implements is iterative method
•  Note iterative version of program, listing 11.3
class IterativeDemo

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Recursive Versus Iterative
•  Recursive method
§  Uses more storage space than iterative
version
§  Due to overhead during runtime
§  Also runs slower
•  However in some programming tasks,
recursion is a better choice, a more
elegant solution

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Recursive Methods that Return a Value

•  Follow same design guidelines as stated


previously
•  Second guideline also states
§  One or more branches includes recursive
invocation that leads to the returned value
•  View program with recursive value
returning method, listing 11.4
class RecursionDemo2

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Recursive Methods that Return a Value
Sample
screen
output

•  Note recursive method NumberOfZeros


§  Has two recursive calls
§  Each returns value assigned to result
§  Variable result is what is returned

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming with Recursion: Outline

•  Programming Example: Insisting that User


Input Be Correct
•  Case Study: Binary Search
•  Programming Example: Merge Sort – A
Recursive Sorting Method

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming Example
•  Insisting that user input be correct
§  Program asks for a input in specific range
§  Recursive method makes sure of this range
§  Method recursively invokes itself as many
times as user gives incorrect input
•  Dangerous technique – can result in stack overflow
if invalid entries entered repeatedly
•  View program, listing 11.5
class CountDown
JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming Example

Sample
screen
output

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Case Study
•  Binary Search
§  We design a recursive method to tell whether
or not a given number is in an array
§  Algorithm assumes array is sorted
•  First we look in the middle of the array
§  Then look in first half or last half, depending
on value found in middle

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Draft 1 of algorithm

§  Algorithm requires additional parameters

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Draft 2 of algorithm to search a[first]
through a[last]

§  What if target is not in the array?


JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Final draft of algorithm to search
a[first] through a[last] to find
target

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Figure 11.3a Binary search example

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Figure 11.3b Binary search example

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  Figure 11.3c Binary search example

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search
•  View final code, listing 11.6
class ArraySearcher
•  Note demo program, listing 11.7
class ArraySearcherDemo

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Binary Search

Sample
screen
output

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming Example
•  Merge sort – A recursive sorting method
•  A divide-and-conquer algorithm
§  Array to be sorted is divided in half
§  The two halves are sorted by recursive calls
§  This produces two smaller, sorted arrays
which are merged to a single sorted array

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Merge Sort
•  Algorithm to sort array a

•  View Java implementation, listing 11.8


class MergeSort
JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Merge Sort
•  View demo program, listing 11.9
class MergeSortDemo

Sample
screen
output

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
•  Method with self invocation
§  Invocation considered a recursive call
•  Recursive calls
§  Legal in Java
§  Can make some method definitions clearer
•  Algorithm with one subtask that is smaller
version of entire task
§  Algorithm is a recursive method

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
•  To avoid infinite recursion recursive
method should contain two kinds of cases
§  A recursive call
§  A base (stopping) case with no recursive call
•  Good examples of recursive algorithms
§  Binary search algorithm
§  Merge sort algorithm

JAVA: An Introduction to Problem Solving & Programming, 6th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy