Io ci ho messo meno di 1 min.

Ecco una versione un po' migliore:
codice:
double r_pow(double base, int exp) 
{ 
    if(exp < 0)
        return 1.0 / r_pow(base, exp);
    else if(exp == 0) 
        return 1; 
    else
        return base * r_pow(base, exp - 1); 
}
Naturalmente per avere le prestazioni migliori si usa un metodo iterativo!