As we have seen in the previous two sections, the design of an algorithm
usually starts with an informal description of a mechanism. The kernel of
this description is about how to create a problem that is more easily
solvable than the given one and whose solution contributes to the solution
of the given problem. Coming up with such ideas requires studying many
different examples. This section presents several illustrative examples of
the design recipe for generative recursion. Some are directly drawn from
mathematics, which is the source of many ideas for general problem-solving
processes; others come from computational contexts. The important point is
to understand the generative ideas behind the algorithms so that they
can be applied in other contexts.
The first example is a graphical illustration of our principle: the
Sierpinski triangle. The second one concerns ``parsing,'' that is, the
process of dissecting sequences of symbols. The third one explains the
divide-and-conquer principle with a simple mathematical example: finding
the root of a function. Many mathematical processes exploit this idea and
is important to understand it for applied mathematics. In the fourth
section, we discuss yet another way of finding a root, this time based on
Newton's method. The last section is an extended exercise; it introduces
Gaussian elimination, the first step in solving a system of equations.