Contents    Page-10    Prev    Next    Page+10    Index   


A recursive program calls itself as a subroutine. Recursion allows one to write programs that are powerful, yet simple and elegant. Often, a large problem can be handled by a small program which:

  1. Tests for a base case and computes the value for this case directly.

  2. Otherwise,
    1. calls itself recursively to do smaller parts of the job,

    2. computes the answer in terms of the answers to the smaller parts.

   (defun factorial (n)
     (if (<= n 0)
         (* n (factorial (- n 1))) ) )

Rule: Make sure that each recursive call involves an argument that is strictly smaller than the original; otherwise, the program can get into an infinite loop.

A good method is to use a counter or data whose size decreases with each call, and to stop at 0; this is an example of a well-founded ordering.