The Department of Computer Science & Engineering
cse@buffalo

CSE202: Programming in Lisp

Course
Grades
Email

Welcome

Policies
    Grades
    Inc
    Intgrty

Preface
Part I
  Chap 1
  Chap 2
  Chap 3
  XEmacs
  Chap 4
  Chap 5
  Chap 6
  Chap 7
  Chap 8
  Chap 9
Part II
  Chap 10
  Chap 11
  Chap 12
  Chap 13
  Chap 14
  Chap 15
  Chap 16
  Chap 17
  Chap 18
  Chap 19
  Chap 20
  Chap 21
  Chap 22
  Chap 23
Part III
  Chap 24
  Chap 25
  Chap 26
  Chap 27
  Chap 28
  Chap 29
  Chap 30
  Chap 31
  Chap 32
CHAPTER 15: RECURSION
Notes
  1. Read Chapter 15

  2. Be sure you do the exercises of this chapter in the package ch15

  3. Do Exercises 15.1 - 15.3

  4. Do Exercise 15.4. You may have to use quite a large number, and you may have to wait awhile before the error occurs, but it finally did so for me.

    The reason I ask you to cause errors intentionally is so that when they happen unexpectedly, you will have a better chance of knowing what caused them and how to recover from them.

  5. Do Exercise 15.5. It's hard for Lisp to do anything when its stack is already full, so just type :loc to the debugger, and you should see the current values of N1 and N2

  6. Do Exercises 15.6 and 15.7. The answers to 15.7 are:
    15.7a: C-c C-c
    15.7b: :cont 0
    15.7c: :cont 1 or :res

  7. Do Exercises 15.8 - 15.10.

  8. Do Exercise 15.11. Note that when the error occurs, you can continue it with a new value for N1 by entering :cont 0 and then following the directions.

  9. Do Exercise 15.12. Note very carefully the difference between the last definition of sum and this definition of sum2. Also compare carefully the traces of sum and sum2.

  10. Do Exercise 15.15.

  11. Do Exercises 15.13 and 15.14, and submit a file called ch15.cl containing these two function definitions. Recall the following facts from high school algebra:

    x*y = (x-1)*y + y
    x^y = x * x^(y-1)

Next

Copyright © 1999, 2000 by Stuart C. Shapiro. All rights reserved.

Stuart C. Shapiro <shapiro@cse.buffalo.edu>