#include <iostream>
using namespace std;

int pow(int a, int x);

int main()
{
  int base, exponent;
  cout << "Enter the base: ";
  cin >> base;
  cout << "Enter the exponent: ";
  cin >> exponent;
  
  cout << base << "^" << exponent 
       << " = " << pow(base, exponent) << endl;
}

int pow(int a, int x)
{
  int f;
  
  if(x==1)    // Base case : x is 1
    return a;

  if(x%2==1){  // First recursive case : x is odd
    /* Note: x/2 = (x-1)/2 
     * because integer division rounds down
     */
    f = pow(a, x/2); 
    return a*f*f;
  }else{  // Second recursive case: x is even
    f = pow(a, x/2); 
    return f*f;
  } 
}

