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

COMP 352 Data Structures and Algorithms: Recursion

Comp 352 Concordia Winter 2018 class notes

Uploaded by

aikfirki
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)
55 views

COMP 352 Data Structures and Algorithms: Recursion

Comp 352 Concordia Winter 2018 class notes

Uploaded by

aikfirki
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/ 40

COMP 352

Data Structures and


Algorithms

RECURSION
Chapter 5

1
Towers of Hanoi puzzle. Boggle

Boggle Game

Flow Free online

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?

The Recursion Pattern

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 )

depth of recursion: 1+log2n

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

Copyright © Wiley, Michael T. Goodrich, Roberto TamassiaCopyright © 2014


Copyright © Lewis/Chase, 2014
Copyright © 2015 Nancy Acemian
Copyright © 2015 Nora Houari
All rights reserved

40

You might also like