From 《ANSI Common Lisp》Chapter Three Section Nine Understanding Recursion
Added function:

	len.lisp

To see if a recursive function does what it's supposed to, all you have to ask is, does it cover all the cases? We can assure ourselves that this function is correct by verifying two things:

	1. That it works for lists of length 0.
	2. Given that it works for lists of length n, that it also works for lists of length n+1.

If we can establish both points, then we know that the function is correct for all possible lists. This is all we need to know. The secret to understanding recursion is a lot like the secret for dealing with parentheses. How do you see which parenthesis matches which? You don't have to. How do you visualize all those invocations? You don't have to. With more complicated recursive functions, there might be more cases, but the procedure is the same. For example, with our-copy-tree we would have to consider three cases: atoms, single conses, and trees of n+1 conses.