![]() |
![]() |
![]() |
![]() |
![]() |
|
Now for the recursion trick: You replace power_of_2 in
recursive_power_of_2 by recursive_power_of_2 itself:
int recursive_power_of_2 (int n) {
if (n == 0)
return 1;
else return 2 * power_of_2 (n - 1);
}
int recursive_power_of_2 (int n) {
if (n == 0)
return 1;
else return 2 * recursive_power_of_2 (n - 1);
}
The new version works for two reasons:
n, is 0,
recursive_power_of_2 returns 1.
n is not 0,
recursive_power_of_2 asks itself to compute the power of 2
for a number that is 1 less than the value of n. Then,
recursive_power_of_2 may ask itself to compute the power
of 2 for a number that is 2 less than the original value of
n, and so on, until the recursive_power_of_2 needs
to deal with only 0.