8
Recursion Chapter 17

Chapter 17

Embed Size (px)

Citation preview

Page 1: Chapter 17

Recursion

Chapter 17

Page 2: Chapter 17

17

What is recursion?Recursion occurs when a method calls itself, either directly or indirectly.

Used to solve difficult, repetitive problems

Page 3: Chapter 17

17

Factorial ExampleN! (N Factorial)

N! = N * (N – 1)! for N >= 0 and 0! = 1

5! = 5 * 4! or 5 * 4 * 3 * 2 * 1 * 1 = 120

4! = 4 * 3! or 4 * 3 * 2 * 1 * 1 = 24

3! = 3 * 2! or 3 * 2 * 1 * 1 = 6

2! = 2 * 1! or 2 * 1 * 1 = 2

1! = 1 * 0! or 1 * 1 = 1

0! = 1

Page 4: Chapter 17

17Calculate Factorials Using

RecursionThe Java solution:

private int doFactorial(int N){ if ( N == 0 ) { return 1; } return N * doFactorial(N – 1);}

Page 5: Chapter 17

17

Towers of HanoiThree towers hold rings stacked in order from largest to smallest (bottom to top)

Player can only move one ring at a time

Larger rings cannot be stacked on top of smaller ring

Player must move stack to another tower

Page 6: Chapter 17

17The Towers of Hanoi

AlgorithmClassic problem can be solved with recursion.

Move N–1 rings to storage tower

Move Nth ring to destination tower

Move N–1 rings to destination tower

Page 7: Chapter 17

17

Towers of Hanoi SolutionFinal graphical solution includes the files:

TowerRing.java

Tower.java

TowerMove.java

ThreeTowers.java

TowersOfHanoi.java

TowerPanel.java

Page 8: Chapter 17

17

Graphical Towers of HanoiApplet in progress