Next, note that you can arrange for recursive_power_of_2
to hand
over a little less work to power_of_2
by performing one of the
multiplications by 2 in recursive_power_of_2
itself, and subtracting
1 from power_of_2
's argument:
int recursive_power_of_2 (int n) {
if (n == 0)
return 1;
else
return 2 * power_of_2 (n - 1);
}
Clearly, recursive_power_of_2
must work as long as one of the following
two situations holds:
n
, is 0
; in this
situation, recursive_power_of_2
returns 1
.
n
is not 0
, but power_of_2
is able to compute the power of 2 that is 1 less than the
value of n
.