#include #include double uexponent(double m, unsigned int n) { double ret; if (!n) return 1; if (n == 1) return m; ret = uexponent(m, n / 2); ret *= ret; if (n % 2) return ret * m; else return ret; } double exponent(double m, int n = 2) { if (n >= 0) return uexponent(m, n); return 1 / uexponent(m, std::abs(n)); } int main() { double m = 4.1; int n = 4; std::cout << m << " raised to " << n << ": " << exponent(m, n) << std::endl << "When n is omitted: " << exponent(m) << std::endl; }