Search code examples
algorithmrecursiondata-structuresdivide-and-conquer

Power with divide & conquer algorithm


i want to find for calculating X^46, how many multiplication occurs with optimal D&C approach for calculating Power.

I think this is the best optimal code for calculating power with divide & conquer approach.

int power(int x, unsigned int y)
  {
     int temp;
     if( y == 0)
       return 1;
     temp = power(x, y/2);
     if (y%2 == 0)
       return temp*temp;
     else
       return x*temp*temp;
  }

in one note wrote for calculating X^46 with optimal Power code in D&C we need 8 multiplication, but in my code there is 10. anyone correct me?

Edit:

the last code is:

  int power(int x, unsigned int y)
  {
     int temp;
     if( y == 0)
       return 1;
     if( y ==1)
        return x;
     temp = power(x, y/2);
     if (y%2 == 0)
       return temp*temp;
     else
       return x*temp*temp;
  }

Solution

  • You left out the optimizing base case of

     if (y==1)
         return x
    

    and instead require extra multiplications from

     temp = power(x, 0)
     return x * temp * temp
    

    The extra pair of multiplications come from the unnecessary final recursive call.