![]() |
![]() |
![]() |
![]() |
![]() |
|
In principle, rabbits,
previous_month, and penultimate_month should work fine
together. However, if you just put them as is into a program, you soon
discover that, no matter how you arrange the functions, at least one
function is referred to before it is defined. In the following
arrangement, for example, rabbits is referred to before it is
defined.
int previous_month (int n) {return rabbits (n - 1);}
int penultimate_month (int n) {return rabbits (n - 2);}
int rabbits (int n) {
if (n == 0 || n == 1)
return 1;
else return previous_month (n) + penultimate_month (n);
}
The C compiler cannot compile a program that includes these three
functions defined in this order, because the C compiler does not know how
to prepare calls to the rabbits function before the rabbits
function is defined. Yet calls to the rabbits function occur in
both previous_month and penultimate_month, both of which are
defined before rabbits is defined.