I am using Stephen Prata's C Primer Plus (5th Edition) to teach myself C Programming. I am not a student (I wish), and am seeing myself stuck!
(bear with me, this is my first post so I hope I get the formatting right)
I have this code:
Code:
#include <stdio.h>
double power(double a, int b); /* ANSI prototype */
int main(void)
{
double x, xpow;
int n;
printf("Enter a number and the integer power");
printf(" to which\nthe number will be raised. Enter q");
printf(" to quit.\n");
while (scanf("%lf%d", &x, &n) == 2)
{
xpow = power(x,n); /* function call */
printf("%.3g to the power %d is %.5g\n", x, n, xpow);
printf("Enter next pair of numbers or q to quit.\n");
}
printf("Hope you enjoyed this power trip -- bye!\n");
return 0;
}
// test runs:
// 1 & 1 == 1
// 5 & 5 == 3125
// 6 & 7 == 2.7994e+005
double power(double a, int b)
{
double pow = 1.0;
int i;
if ((b == 0) && (a == 0)) pow = 1.0;
else if (a == 0) pow = 0.0;
else if (b > 0)
for(i = 1; i <= b; i++)
pow *= a;
else /* b < 0 */
pow = 1.0 / power(a, - b);
return pow;
}
I am learning Recursion and the books suggest transforming the above using a recursive approach; I just cant get my head around it. any suggestions would be highly appreciated.