Zud
Zud

Reputation: 4497

Trying to Implement power and factorial functions recursively. C++

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

Answers (6)

dr jimbob
dr jimbob

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

Zac Howland
Zac Howland

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

JohnGray
JohnGray

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

AndrewShmig
AndrewShmig

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

Skilldrick
Skilldrick

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

casablanca
casablanca

Reputation: 70731

Start by reading these:

Upvotes: 3

Related Questions