In Segment 232, you learned that the number of rabbits after
more than 1 month is the sum of the number at the end of the previous month
and the month before that. With only this information, you can rewrite the
rabbits
function in terms of two auxiliary functions,
previous_month
and penultimate_month
:
int rabbits (int n) { if (n == 0 || n == 1) return 1; else return previous_month (n) + penultimate_month (n); /**/ }
Then, realizing that previous_month
must return the number of
rabbits at the end of the previous month, you can see that you can define
previous_month
as follows:
int previous_month (int n) {return rabbits (n - 1);}
Analogous reasoning leads you to the following definition for
penultimate_month
:
int penultimate_month (int n) {return rabbits (n - 2);}