80 likes | 173 Views
Chapter 17. Recursion. What is recursion?. Recursion occurs when a method calls itself, either directly or indirectly. Used to solve difficult, repetitive problems. Factorial Example. N! (N Factorial) N! = N * (N – 1)! for N >= 0 and 0! = 1 5! = 5 * 4! or 5 * 4 * 3 * 2 * 1 * 1 = 120
E N D
Chapter 17 Recursion
What is recursion? • Recursion occurs when a method calls itself, either directly or indirectly. • Used to solve difficult, repetitive problems
Factorial Example • N! (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
Calculate Factorials Using Recursion • The Java solution: • private int doFactorial(int N) { if ( N == 0 ) { return 1; } return N * doFactorial(N – 1); }
Towers of Hanoi • Three 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
The Towers of Hanoi Algorithm • Classic 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
Towers of Hanoi Solution • Final graphical solution includes the files: • TowerRing.java • Tower.java • TowerMove.java • ThreeTowers.java • TowersOfHanoi.java • TowerPanel.java
Graphical Towers of Hanoi • Applet in progress