SlideShare uma empresa Scribd logo
1 de 35
Java Programming: From Problem
Analysis to Program Design, 5e

Chapter 13
Recursion
Chapter Objectives
• Learn about recursive definitions
• Explore the base case and the general case
of a recursive definition
• Learn about recursive algorithms

Java Programming: From Problem Analysis to Program Design, 5e

2
Chapter Objectives (continued)
• Learn about recursive methods
• Become aware of direct and indirect
recursion
• Explore how to use recursive methods to
implement recursive algorithms

Java Programming: From Problem Analysis to Program Design, 5e

3
Recursive Definitions
• Recursion
– Process of solving a problem by reducing it to
smaller versions of itself

• Recursive definition
– Definition in which a problem is expressed in
terms of a smaller version of itself
– Has one or more base cases

Java Programming: From Problem Analysis to Program Design, 5e

4
Recursive Definitions (continued)

Java Programming: From Problem Analysis to Program Design, 5e

5
Recursive Definitions (continued)
• Recursive algorithm
– Algorithm that finds the solution to a given problem
by reducing the problem to smaller versions of itself
– Has one or more base cases
– Implemented using recursive methods

• Recursive method
– Method that calls itself

• Base case
– Case in recursive definition in which the solution is
obtained directly
– Stops the recursion

Java Programming: From Problem Analysis to Program Design, 5e

6
Recursive Definitions (continued)
• General solution
– Breaks problem into smaller versions of itself

• General case
– Case in recursive definition in which a smaller
version of itself is called
– Must eventually be reduced to a base case

Java Programming: From Problem Analysis to Program Design, 5e

7
Tracing a Recursive Method
• Recursive method
– Logically, you can think of a recursive method
having unlimited copies of itself
– Every recursive call has its own:
• Code
• Set of parameters
• Set of local variables

Java Programming: From Problem Analysis to Program Design, 5e

8
Tracing a Recursive Method
(continued)
• After completing a recursive call
– Control goes back to the calling environment
– Recursive call must execute completely before
control goes back to previous call
– Execution in previous call begins from point
immediately following recursive call

Java Programming: From Problem Analysis to Program Design, 5e

9
Recursive Definitions
• Directly recursive: a method that calls itself
• Indirectly recursive: a method that calls
another method and eventually results in the
original method call
• Tail recursive method: recursive method in
which the last statement executed is the
recursive call
• Infinite recursion: the case where every
recursive call results in another recursive call
Java Programming: From Problem Analysis to Program Design, 5e

10
Designing Recursive Methods
• Understand problem requirements
• Determine limiting conditions
• Identify base cases

Java Programming: From Problem Analysis to Program Design, 5e

11
Designing Recursive Methods
(continued)
• Provide direct solution to each base case
• Identify general case(s)
• Provide solutions to general cases in terms
of smaller versions of general cases

Java Programming: From Problem Analysis to Program Design, 5e

12
Recursive Factorial Method
public static int fact(int num)
{
if (num = = 0)
return 1;
else
return num * fact(num – 1);
}

Java Programming: From Problem Analysis to Program Design, 5e

13
Recursive Factorial Method (continued)

Java Programming: From Problem Analysis to Program Design, 5e

14
Largest Value in Array

Java Programming: From Problem Analysis to Program Design, 5e

15
Largest Value in Array (continued)
•
•

if the size of the list is 1
the largest element in the list is the only element in the list
else
to find the largest element in list[a]...list[b]
a. find the largest element in list[a + 1]...list[b]
and call it max
b. compare list[a] and max
if (list[a] >= max)
the largest element in list[a]...list[b] is
list[a]
else
the largest element in list[a]...list[b] is max
Java Programming: From Problem Analysis to Program Design, 5e

16
Largest Value in Array (continued)
public static int largest(int[] list,
int lowerIndex,
int upperIndex)
{
int max;
if (lowerIndex == upperIndex)
return list[lowerIndex];
else
{
max = largest(list, lowerIndex + 1, upperIndex);
if (list[lowerIndex] >= max)
return list[lowerIndex];
else
return max;
}
}
Java Programming: From Problem Analysis to Program Design, 5e

17
Execution of largest
(list, 0, 3)

Java Programming: From Problem Analysis to Program Design, 5e

18
Execution of largest (list, 0, 3)

Java Programming: From Problem Analysis to Program Design, 5e

19
Recursive Fibonacci

Java Programming: From Problem Analysis to Program Design, 5e

20
Recursive Fibonacci (continued)
public static int rFibNum(int a, int b,
int n)
{
if (n == 1)
return a;
else if (n == 2)
return b;
else
return rFibNum(a, b, n -1) +
rFibNum(a, b, n - 2);
}
Java Programming: From Problem Analysis to Program Design, 5e

21
Recursive Fibonacci (continued)

Java Programming: From Problem Analysis to Program Design, 5e

22
Towers of Hanoi Problem with
Three Disks

Java Programming: From Problem Analysis to Program Design, 5e

23
Towers of Hanoi: Three Disk
Solution

Java Programming: From Problem Analysis to Program Design, 5e

24
Towers of Hanoi: Three Disk Solution
(continued)

Java Programming: From Problem Analysis to Program Design, 5e

25
Towers of Hanoi: Recursive Algorithm
public static void moveDisks(int count,
int needle1, int needle3, int needle2)
{
if (count > 0)
{
moveDisks(count - 1, needle1,
needle2, needle3);
System.out.println("Move disk " + count
+ " from needle "
+ needle1 + " to needle "
+ needle3 + ". ");
moveDisks(count - 1, needle2,
needle3, needle1);
}
}
Java Programming: From Problem Analysis to Program Design, 5e

26
Recursion or Iteration?
• Two ways to solve particular problem
– Iteration
– Recursion

• Iterative control structures: use looping to
repeat a set of statements
• Tradeoffs between two options
– Sometimes recursive solution is easier
– Recursive solution is often slower
Java Programming: From Problem Analysis to Program Design, 5e

27
Programming Example:
Decimal to Binary

Java Programming: From Problem Analysis to Program Design, 5e

28
Java Programming: From Problem Analysis to Program Design, 5e

29
Sierpinski Gaskets of Various Orders

Java Programming: From Problem Analysis to Program Design, 5e

30
Programming Example:
Sierpinski Gasket
• Input: nonnegative integer indicating level
of Sierpinski gasket
• Output: triangle shape displaying a
Sierpinski gasket of the given order
• Solution includes:
– Recursive method drawSierpinski
– Method to find midpoint of two points
Java Programming: From Problem Analysis to Program Design, 5e

31
Programming Example:
Sierpinski Gasket (continued)
private void drawSierpinski(Graphics g, int lev,
Point p1, Point p2, Point p3)
{
Point midP1P2;
Point midP2P3;
Point midP3P1;
if (lev > 0)
{
g.drawLine(p1.x, p1.y, p2.x, p2.y);
g.drawLine(p2.x, p2.y, p3.x, p3.y);
g.drawLine(p3.x, p3.y, p1.x, p1.y);
midP1P2 = midPoint(p1, p2);
midP2P3 = midPoint(p2, p3);
midP3P1 = midPoint(p3, p1);
drawSierpinski(g, lev - 1, p1, midP1P2,
midP3P1);
drawSierpinski(g, lev - 1, p2, midP2P3,
midP1P2);
drawSierpinski(g, lev - 1, p3,
midP3P1, midP2P3);
}
} Java Programming: From Problem Analysis to Program Design, 5e

32
Programming Example: Sierpinski
Gasket (continued)

Java Programming: From Problem Analysis to Program Design, 5e

33
Chapter Summary
•
•
•
•
•

Recursive definitions
Recursive algorithms
Recursive methods
Base cases
General cases

Java Programming: From Problem Analysis to Program Design, 5e

34
Chapter Summary (continued)
•
•
•
•
•

Tracing recursive methods
Designing recursive methods
Varieties of recursive methods
Recursion vs. iteration
Various recursive functions explored

Java Programming: From Problem Analysis to Program Design, 5e

35

Mais conteúdo relacionado

Mais procurados

Looping statements in Java
Looping statements in JavaLooping statements in Java
Looping statements in Java
Jin Castor
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
Sajid Marwat
 

Mais procurados (20)

Windowforms controls c#
Windowforms controls c#Windowforms controls c#
Windowforms controls c#
 
Polymorphism in Python
Polymorphism in Python Polymorphism in Python
Polymorphism in Python
 
Python programming : Inheritance and polymorphism
Python programming : Inheritance and polymorphismPython programming : Inheritance and polymorphism
Python programming : Inheritance and polymorphism
 
Modules and packages in python
Modules and packages in pythonModules and packages in python
Modules and packages in python
 
Interface in java
Interface in javaInterface in java
Interface in java
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
 
Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursion
 
Looping statements in Java
Looping statements in JavaLooping statements in Java
Looping statements in Java
 
Constructor overloading & method overloading
Constructor overloading & method overloadingConstructor overloading & method overloading
Constructor overloading & method overloading
 
Python: Modules and Packages
Python: Modules and PackagesPython: Modules and Packages
Python: Modules and Packages
 
Bubble sort
Bubble sortBubble sort
Bubble sort
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
Object oriented programming with python
Object oriented programming with pythonObject oriented programming with python
Object oriented programming with python
 
Data Types, Variables, and Operators
Data Types, Variables, and OperatorsData Types, Variables, and Operators
Data Types, Variables, and Operators
 
OOPS Basics With Example
OOPS Basics With ExampleOOPS Basics With Example
OOPS Basics With Example
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
 
Introduction to c#
Introduction to c#Introduction to c#
Introduction to c#
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
Templates in c++
Templates in c++Templates in c++
Templates in c++
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 

Destaque

9781111530532 ppt ch03
9781111530532 ppt ch039781111530532 ppt ch03
9781111530532 ppt ch03
Terry Yoast
 
9781111530532 ppt ch05
9781111530532 ppt ch059781111530532 ppt ch05
9781111530532 ppt ch05
Terry Yoast
 
Chapter 1 - An Overview of Computers and Programming Languages
Chapter 1 - An Overview of Computers and Programming LanguagesChapter 1 - An Overview of Computers and Programming Languages
Chapter 1 - An Overview of Computers and Programming Languages
Adan Hubahib
 
9781111530532 ppt ch04
9781111530532 ppt ch049781111530532 ppt ch04
9781111530532 ppt ch04
Terry Yoast
 
9781111530532 ppt ch10
9781111530532 ppt ch109781111530532 ppt ch10
9781111530532 ppt ch10
Terry Yoast
 
9781111530532 ppt ch08
9781111530532 ppt ch089781111530532 ppt ch08
9781111530532 ppt ch08
Terry Yoast
 
9781111530532 ppt ch07
9781111530532 ppt ch079781111530532 ppt ch07
9781111530532 ppt ch07
Terry Yoast
 
Chapter 2 - Basic Elements of Java
Chapter 2 - Basic Elements of JavaChapter 2 - Basic Elements of Java
Chapter 2 - Basic Elements of Java
Adan Hubahib
 
Algorithm Design and Complexity - Course 3
Algorithm Design and Complexity - Course 3Algorithm Design and Complexity - Course 3
Algorithm Design and Complexity - Course 3
Traian Rebedea
 

Destaque (9)

9781111530532 ppt ch03
9781111530532 ppt ch039781111530532 ppt ch03
9781111530532 ppt ch03
 
9781111530532 ppt ch05
9781111530532 ppt ch059781111530532 ppt ch05
9781111530532 ppt ch05
 
Chapter 1 - An Overview of Computers and Programming Languages
Chapter 1 - An Overview of Computers and Programming LanguagesChapter 1 - An Overview of Computers and Programming Languages
Chapter 1 - An Overview of Computers and Programming Languages
 
9781111530532 ppt ch04
9781111530532 ppt ch049781111530532 ppt ch04
9781111530532 ppt ch04
 
9781111530532 ppt ch10
9781111530532 ppt ch109781111530532 ppt ch10
9781111530532 ppt ch10
 
9781111530532 ppt ch08
9781111530532 ppt ch089781111530532 ppt ch08
9781111530532 ppt ch08
 
9781111530532 ppt ch07
9781111530532 ppt ch079781111530532 ppt ch07
9781111530532 ppt ch07
 
Chapter 2 - Basic Elements of Java
Chapter 2 - Basic Elements of JavaChapter 2 - Basic Elements of Java
Chapter 2 - Basic Elements of Java
 
Algorithm Design and Complexity - Course 3
Algorithm Design and Complexity - Course 3Algorithm Design and Complexity - Course 3
Algorithm Design and Complexity - Course 3
 

Semelhante a Chapter 13 - Recursion (20)

9781111530532 ppt ch13
9781111530532 ppt ch139781111530532 ppt ch13
9781111530532 ppt ch13
 
Chapter 13
Chapter 13Chapter 13
Chapter 13
 
9781285852744 ppt ch15
9781285852744 ppt ch159781285852744 ppt ch15
9781285852744 ppt ch15
 
Chap14
Chap14Chap14
Chap14
 
9781111530532 ppt ch02
9781111530532 ppt ch029781111530532 ppt ch02
9781111530532 ppt ch02
 
9781111530532 ppt ch07
9781111530532 ppt ch079781111530532 ppt ch07
9781111530532 ppt ch07
 
9781439035665 ppt ch07
9781439035665 ppt ch079781439035665 ppt ch07
9781439035665 ppt ch07
 
Ppt chapter12
Ppt chapter12Ppt chapter12
Ppt chapter12
 
9781111530532 ppt ch02
9781111530532 ppt ch029781111530532 ppt ch02
9781111530532 ppt ch02
 
9781439035665 ppt ch02
9781439035665 ppt ch029781439035665 ppt ch02
9781439035665 ppt ch02
 
Introduction to Algorithms And DataStructure
Introduction to Algorithms And DataStructureIntroduction to Algorithms And DataStructure
Introduction to Algorithms And DataStructure
 
CH-1.1 Introduction (1).pptx
CH-1.1 Introduction (1).pptxCH-1.1 Introduction (1).pptx
CH-1.1 Introduction (1).pptx
 
Types of Algorithms.ppt
Types of Algorithms.pptTypes of Algorithms.ppt
Types of Algorithms.ppt
 
9781111530532 ppt ch03
9781111530532 ppt ch039781111530532 ppt ch03
9781111530532 ppt ch03
 
Functions ppt ch06
Functions ppt ch06Functions ppt ch06
Functions ppt ch06
 
Cis068 08
Cis068 08Cis068 08
Cis068 08
 
9781423902096_PPT_ch07.ppt
9781423902096_PPT_ch07.ppt9781423902096_PPT_ch07.ppt
9781423902096_PPT_ch07.ppt
 
RECURSION.pptx
RECURSION.pptxRECURSION.pptx
RECURSION.pptx
 
Dynamic pgmming
Dynamic pgmmingDynamic pgmming
Dynamic pgmming
 
Knightstour
KnightstourKnightstour
Knightstour
 

Último

Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
ssuserdda66b
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Último (20)

Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 

Chapter 13 - Recursion

  • 1. Java Programming: From Problem Analysis to Program Design, 5e Chapter 13 Recursion
  • 2. Chapter Objectives • Learn about recursive definitions • Explore the base case and the general case of a recursive definition • Learn about recursive algorithms Java Programming: From Problem Analysis to Program Design, 5e 2
  • 3. Chapter Objectives (continued) • Learn about recursive methods • Become aware of direct and indirect recursion • Explore how to use recursive methods to implement recursive algorithms Java Programming: From Problem Analysis to Program Design, 5e 3
  • 4. Recursive Definitions • Recursion – Process of solving a problem by reducing it to smaller versions of itself • Recursive definition – Definition in which a problem is expressed in terms of a smaller version of itself – Has one or more base cases Java Programming: From Problem Analysis to Program Design, 5e 4
  • 5. Recursive Definitions (continued) Java Programming: From Problem Analysis to Program Design, 5e 5
  • 6. Recursive Definitions (continued) • Recursive algorithm – Algorithm that finds the solution to a given problem by reducing the problem to smaller versions of itself – Has one or more base cases – Implemented using recursive methods • Recursive method – Method that calls itself • Base case – Case in recursive definition in which the solution is obtained directly – Stops the recursion Java Programming: From Problem Analysis to Program Design, 5e 6
  • 7. Recursive Definitions (continued) • General solution – Breaks problem into smaller versions of itself • General case – Case in recursive definition in which a smaller version of itself is called – Must eventually be reduced to a base case Java Programming: From Problem Analysis to Program Design, 5e 7
  • 8. Tracing a Recursive Method • Recursive method – Logically, you can think of a recursive method having unlimited copies of itself – Every recursive call has its own: • Code • Set of parameters • Set of local variables Java Programming: From Problem Analysis to Program Design, 5e 8
  • 9. Tracing a Recursive Method (continued) • After completing a recursive call – Control goes back to the calling environment – Recursive call must execute completely before control goes back to previous call – Execution in previous call begins from point immediately following recursive call Java Programming: From Problem Analysis to Program Design, 5e 9
  • 10. Recursive Definitions • Directly recursive: a method that calls itself • Indirectly recursive: a method that calls another method and eventually results in the original method call • Tail recursive method: recursive method in which the last statement executed is the recursive call • Infinite recursion: the case where every recursive call results in another recursive call Java Programming: From Problem Analysis to Program Design, 5e 10
  • 11. Designing Recursive Methods • Understand problem requirements • Determine limiting conditions • Identify base cases Java Programming: From Problem Analysis to Program Design, 5e 11
  • 12. Designing Recursive Methods (continued) • Provide direct solution to each base case • Identify general case(s) • Provide solutions to general cases in terms of smaller versions of general cases Java Programming: From Problem Analysis to Program Design, 5e 12
  • 13. Recursive Factorial Method public static int fact(int num) { if (num = = 0) return 1; else return num * fact(num – 1); } Java Programming: From Problem Analysis to Program Design, 5e 13
  • 14. Recursive Factorial Method (continued) Java Programming: From Problem Analysis to Program Design, 5e 14
  • 15. Largest Value in Array Java Programming: From Problem Analysis to Program Design, 5e 15
  • 16. Largest Value in Array (continued) • • if the size of the list is 1 the largest element in the list is the only element in the list else to find the largest element in list[a]...list[b] a. find the largest element in list[a + 1]...list[b] and call it max b. compare list[a] and max if (list[a] >= max) the largest element in list[a]...list[b] is list[a] else the largest element in list[a]...list[b] is max Java Programming: From Problem Analysis to Program Design, 5e 16
  • 17. Largest Value in Array (continued) public static int largest(int[] list, int lowerIndex, int upperIndex) { int max; if (lowerIndex == upperIndex) return list[lowerIndex]; else { max = largest(list, lowerIndex + 1, upperIndex); if (list[lowerIndex] >= max) return list[lowerIndex]; else return max; } } Java Programming: From Problem Analysis to Program Design, 5e 17
  • 18. Execution of largest (list, 0, 3) Java Programming: From Problem Analysis to Program Design, 5e 18
  • 19. Execution of largest (list, 0, 3) Java Programming: From Problem Analysis to Program Design, 5e 19
  • 20. Recursive Fibonacci Java Programming: From Problem Analysis to Program Design, 5e 20
  • 21. Recursive Fibonacci (continued) public static int rFibNum(int a, int b, int n) { if (n == 1) return a; else if (n == 2) return b; else return rFibNum(a, b, n -1) + rFibNum(a, b, n - 2); } Java Programming: From Problem Analysis to Program Design, 5e 21
  • 22. Recursive Fibonacci (continued) Java Programming: From Problem Analysis to Program Design, 5e 22
  • 23. Towers of Hanoi Problem with Three Disks Java Programming: From Problem Analysis to Program Design, 5e 23
  • 24. Towers of Hanoi: Three Disk Solution Java Programming: From Problem Analysis to Program Design, 5e 24
  • 25. Towers of Hanoi: Three Disk Solution (continued) Java Programming: From Problem Analysis to Program Design, 5e 25
  • 26. Towers of Hanoi: Recursive Algorithm public static void moveDisks(int count, int needle1, int needle3, int needle2) { if (count > 0) { moveDisks(count - 1, needle1, needle2, needle3); System.out.println("Move disk " + count + " from needle " + needle1 + " to needle " + needle3 + ". "); moveDisks(count - 1, needle2, needle3, needle1); } } Java Programming: From Problem Analysis to Program Design, 5e 26
  • 27. Recursion or Iteration? • Two ways to solve particular problem – Iteration – Recursion • Iterative control structures: use looping to repeat a set of statements • Tradeoffs between two options – Sometimes recursive solution is easier – Recursive solution is often slower Java Programming: From Problem Analysis to Program Design, 5e 27
  • 28. Programming Example: Decimal to Binary Java Programming: From Problem Analysis to Program Design, 5e 28
  • 29. Java Programming: From Problem Analysis to Program Design, 5e 29
  • 30. Sierpinski Gaskets of Various Orders Java Programming: From Problem Analysis to Program Design, 5e 30
  • 31. Programming Example: Sierpinski Gasket • Input: nonnegative integer indicating level of Sierpinski gasket • Output: triangle shape displaying a Sierpinski gasket of the given order • Solution includes: – Recursive method drawSierpinski – Method to find midpoint of two points Java Programming: From Problem Analysis to Program Design, 5e 31
  • 32. Programming Example: Sierpinski Gasket (continued) private void drawSierpinski(Graphics g, int lev, Point p1, Point p2, Point p3) { Point midP1P2; Point midP2P3; Point midP3P1; if (lev > 0) { g.drawLine(p1.x, p1.y, p2.x, p2.y); g.drawLine(p2.x, p2.y, p3.x, p3.y); g.drawLine(p3.x, p3.y, p1.x, p1.y); midP1P2 = midPoint(p1, p2); midP2P3 = midPoint(p2, p3); midP3P1 = midPoint(p3, p1); drawSierpinski(g, lev - 1, p1, midP1P2, midP3P1); drawSierpinski(g, lev - 1, p2, midP2P3, midP1P2); drawSierpinski(g, lev - 1, p3, midP3P1, midP2P3); } } Java Programming: From Problem Analysis to Program Design, 5e 32
  • 33. Programming Example: Sierpinski Gasket (continued) Java Programming: From Problem Analysis to Program Design, 5e 33
  • 34. Chapter Summary • • • • • Recursive definitions Recursive algorithms Recursive methods Base cases General cases Java Programming: From Problem Analysis to Program Design, 5e 34
  • 35. Chapter Summary (continued) • • • • • Tracing recursive methods Designing recursive methods Varieties of recursive methods Recursion vs. iteration Various recursive functions explored Java Programming: From Problem Analysis to Program Design, 5e 35