CS102 · Recursion · Annotated SlidesRecursion
Original
Overview

Recursion

Recursive methods, base cases and recursive cases, countdown, the call sequence, infinite recursion and stack overflow, recursion vs. iteration, tail recursion, factorial, Fibonacci, and a recursive power method.

How to read this page

Every original slide is shown unchanged. Yellow marks on a slide point to a numbered note: hover or tap a mark to jump to its note, and hover a note to see its marks. Questions tagged Past exam appeared on a real paper; Prediction questions are likely angles, not confirmed. Pick an answer to each question: a wrong pick tells you why it is wrong, so you can try again.

All 30 slides
  1. 1 Recursion
  2. 2 Objectives
  3. 3 Basics of Recursion
  4. 4 Simple Example - Countdown
  5. 5 Recursive Countdown
  6. 6 See code for count down
  7. 7 Sequence of Calls
  8. 8 Keys to Successful Recursion
  9. 9 Infinite Recursion
  10. 10 Recursive Versus Iterative
  11. 11 Recursive Versus Iterative
  12. 12 Recursion
  13. 13 Recursion
  14. 14 Tail Recursion
  15. 15 Factorial
  16. 16 • A recursive declaration of the factorial method is arrived at by observing the
  17. 17 • The evaluation of 5! would proceed as shown in Fig. 18.2.
  18. 18 Slide 18
  19. 19 The recursive method factorial (lines 7–13) first tests to
  20. 20 See code for factorial
  21. 21 Slide 21
  22. 22 Example Using Recursion: Fibonacci Series
  23. 23 18.4 Example Using Recursion: Fibonacci Series (cont.)
  24. 24 See code for Fibonacci
  25. 25 Slide 25
  26. 26 (Recursive power Method)
  27. 27 See Code for Pow
  28. 28 Sample output
  29. 29 See code
  30. 30 Summary
Slide 1 / 30

Recursion

Slide 1: Recursion
Slide 2 / 30

Objectives

Slide 2: Objectives
Slide 3 / 30

Basics of Recursion

Slide 3: Basics of Recursion

Notes

  1. A recursive method calls itself on a smaller version of the same problem.

Slide 4 / 30

Simple Example - Countdown

Slide 4: Simple Example - Countdown
Slide 5 / 30

Recursive Countdown

Slide 5: Recursive Countdown
Slide 6 / 30

See code for count down

Slide 6: See code for count down
Slide 7 / 30

Sequence of Calls

Slide 7: Sequence of Calls
Slide 8 / 30

Keys to Successful Recursion

Slide 8: Keys to Successful Recursion

Exam angle

PredictionQ1

What three things does a correct recursive method need?

Compare with the model answer

A branch that separates cases; at least one recursive call on a smaller version of the problem; and a base case that stops without recursing.

Slide 9 / 30

Infinite Recursion

Slide 9: Infinite Recursion

Notes

  1. No base case (or not getting smaller) → infinite recursion → StackOverflowError.

Exam angle

PredictionQ1

Infinite recursion in Java eventually causes:

Slide 10 / 30

Recursive Versus Iterative

Slide 10: Recursive Versus Iterative
Slide 11 / 30

Recursive Versus Iterative

Slide 11: Recursive Versus Iterative

Notes

  1. Recursion uses more memory (a stack frame per call) and is often slower; but can be clearer.

Slide 12 / 30

Recursion

Slide 12: Recursion
Slide 13 / 30

Recursion

Slide 13: Recursion
Slide 14 / 30

Tail Recursion

Slide 14: Tail Recursion
Slide 15 / 30

Factorial

Slide 15: Factorial
Slide 16 / 30

• A recursive declaration of the factorial method is arrived at by observing the

Slide 16: • A recursive declaration of the factorial method is arrived at by observing the

Notes

  1. n! = n × (n − 1)!, with 0! = 1! = 1.

Exam angle

PredictionQ1

Write a recursive factorial method.

Compare with the model answer

public static long factorial(long n) { if (n <= 1) return 1; return n * factorial(n - 1); }

Slide 17 / 30

• The evaluation of 5! would proceed as shown in Fig. 18.2.

Slide 17: • The evaluation of 5! would proceed as shown in Fig. 18.2.
Slide 18 / 30

Slide 18

Slide 18: Slide 18
Slide 19 / 30

The recursive method factorial (lines 7–13) first tests to

Slide 19: The recursive method factorial (lines 7–13) first tests to
Slide 20 / 30

See code for factorial

Slide 20: See code for factorial
Slide 21 / 30

Slide 21

Slide 21: Slide 21
Slide 22 / 30

Example Using Recursion: Fibonacci Series

Slide 22: Example Using Recursion: Fibonacci Series

Notes

  1. Fibonacci: 0, 1, 1, 2, 3, 5, 8…; fib(n) = fib(n − 1) + fib(n − 2).

Exam angle

PredictionQ1

With fib(0) = 0 and fib(1) = 1, fib(6) is:

Slide 23 / 30

18.4 Example Using Recursion: Fibonacci Series (cont.)

Slide 23: 18.4 Example Using Recursion: Fibonacci Series (cont.)

Notes

  1. Two base cases: fib(0) = 0, fib(1) = 1. Naïve recursion repeats work exponentially.

Slide 24 / 30

See code for Fibonacci

Slide 24: See code for Fibonacci
Slide 25 / 30

Slide 25

Slide 25: Slide 25
Slide 26 / 30

(Recursive power Method)

Slide 26: (Recursive power Method)

Exam angle

PredictionQ1

Write a recursive power(base, exponent).

Compare with the model answer

public static int power(int base, int exponent) { if (exponent == 1) return base; return base * power(base, exponent - 1); }

Slide 27 / 30

See Code for Pow

Slide 27: See Code for Pow
Slide 28 / 30

Sample output

Slide 28: Sample output
Slide 29 / 30

See code

Slide 29: See code
Slide 30 / 30

Summary

Slide 30: Summary