Reputation: 4497
All ive got so far are the definitions.
double power(double base, int exponent);
double factorial(double n);
And after this i am completely lost and I'm looking for ideas.
Upvotes: 1
Views: 2505
Reputation: 17771
Everyone else seems to assume exp is positive. Possibly could modify to handle 0^0 properly as a NaN rather than 1, if that's important to your application.
double int_power(double base, int exp) {
if (exp == 0)
return 1;
if (exp > 0)
return base*int_power(base, exp-1);
else
return int_power(base, exp+1)/base;
}
Upvotes: 0
Reputation: 15870
Try solving this without using recursion first (if you were actually writing these functions for production code, recursion would hurt their performance anyway). After you get that working, it should be a simple matter to convert it to a recursive algorithm.
HINT:
N! = N * (N-1)!
N^P = product from 1 to P of N
Upvotes: 0
Reputation: 676
double power(double base, int exponent)
{
if (exponent == 0)
return 1;
else
return base * power(base, exponent - 1);
}
double factorial(double n)
{
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
Upvotes: 0
Reputation: 4923
int factorial(int n){
if(n==0) return 1;
else return n*factorial(n-1);}
int power(int number, int p){
if(p==1) return number;
else return number*power(number, p-1);
}
Upvotes: 0
Reputation: 70879
Well, 3^4 is 3 * 3 * 3 * 3. Which is 3 * 3^3. 3^3 is 3 * 3^2. 3^2 is 3 * 3^1. 3^1 is 3.
5! is 5 * 4 * 3 * 2 * 1. Which is 5 * 4!. 4! is 4 * 3!. 3! is 3 * 2!. 2! is 2 * 1!. 1! is 1.
That should give you enough to be getting on with...
Upvotes: 8