COMP 352 Data Structures and Algorithms: Recursion
COMP 352 Data Structures and Algorithms: Recursion
COMP 352 Data Structures and Algorithms: Recursion
RECURSION
Chapter 5
1
Towers of Hanoi puzzle. Boggle
Boggle Game
The 8 puzzle 2
Recursion in action
Quick Sort
Merge Sort
All N-Log Sort
Tree traversals
XML Parsers
HTML Parsers
Backtracking Algorithm
Binary Space Partitioning (BSP) Trees used for collision detection in
game development.
Recursive-descent language parsers
Simulating state machines
Lists (Linked Lists)
Graphs
Inductive reasoning used in AI
Fractals ………
3
Today
Recursion definition
Recursion examples and how to evaluate O()
of a recursion
Linear recursion
Binary recursion
Tail Recursion
Elimination tail recursive
4
What is Recursion?
5
Java implementation
6
Content of a Recursive Method
7
Visualizing Recursion
8
Today
Recursion definition
Recursion examples and how to evaluate O()
of a recursion
Linear recursion
Binary recursion
Tail Recursion
Elimination tail recursive
9
Linear Recursion
10
Example of Linear Recursion
11
Example: Reversing an Array
12
Example: Reversing an Array (1)
13
Example: Reversing an Array (2)
4 3 1 8 2 4 7 5
14
Defining Arguments for Recursion
15
Example: Computing Powers
16
Example: Computing Powers
17
Recursive Squaring
18
Recursive Squaring (cont’d)
19
Recursive Squaring Method
20
Analysis
21
Recursive trace of computing Power (2,13)
22
Today
Recursion definition
Recursion examples and how to evaluate O()
of a recursion
Linear recursion
Binary recursion
Tail Recursion
Elimination tail recursive
23
Binary Recursion
24
Example: Summing Array Elements
1 O(log n )
25
Concrete Example: Summing Array
Elements
26
Example: Summing Array Elements
27
Example: Summing Array Elements
Note
28
Example: Fibonacci Numbers
29
Example: Fibonacci Numbers
30
Example: Fibonacci Numbers
Terribly
inefficient!
31
Example: Fibonacci Numbers
32
A Better Fibonacci Algorithm
33
A Better Fibonacci Program
34
Today
Recursion definition
Recursion examples and how to evaluate O()
of a recursion
Linear recursion
Binary recursion
Tail Recursion
Elimination tail recursive
35
Tail Recursion
36
Tail Recursion Example
Iterative Program
37
Not Tail Recursion Example
38
Today
Recursion definition
Recursion examples and how to evaluate O()
of a recursion
Linear recursion
Binary recursion
Tail Recursion
Elimination tail recursive
39
References
These slides has been extracted, modified and updated from
original slides of :
1. Data Structures and Algorithms in Java, 6th edition. John
Wiley& Sons,
2. Java Software Structures, 4th Edition, Lewis/Chase, 2014
40