Designing programs with memory requires experience and practice, which, in
turn, come from studying examples. In this section we study three more
examples of programs that use memory. The first one illustrates the
importance of initializers; the second one demonstrates how to design
programs whose effects depend on conditions; and the last one shows how
effects can be useful in recursive functions. The last two subsections
provide opportunities for practicing what we learned.