Recursion

Reading

Chapters 15 and 10.

Key ideas

From chapter 15:

A recursive algorithm must obey 3 laws:

  1. A recursive algorithm must have a base case.
  2. A recursive algorithm must change its state and move toward the base case.
  3. A recursive algorithm must call itself, recursively.

From chapter 10:

todo

Active learning

Activity 1

  • Download draw_tree.py . Run it. Then:
  • Add descriptive comments to the commands inside main().
  • Try to understand tree(branchLen, t). What is the base case?
  • If a call to tree is not at the base case, how does it change its state to move toward the base case?

Activity 2

  • Experiment with convert.py until you fully understand it.
  • What is the base case?
  • What is the general case?
  • Verify that the answers produced for the three test cases are correct.
  • Explain why print(convert(100, 1)) produces an error.
  • Explain why print(convert(100, 200)) produces an error.
  • What is the largest base for which the convert function is correct?
  • Uncomment the three statements and supply the missing unconvert function. The function should be recursive and take two parameters. The first parameter is a string representation of a number and the second parameter is the base of the first parameter. The function should calculate and return the base 10 integer equivalent of the first parameter.

Activity 3