.In practice, we can
assure this either by decrementing an integer for each call (and terminating at zero, or
some other goal), or by taking only the tail of a list for each successive call (and
terminating at an empty list). Both versions of factorial listed in the example assume
they will be passed an integer greater than zero (and will fail otherwise; exercise: how?).