forked from natto1784/ooplab
37 lines
572 B
C++
37 lines
572 B
C++
#include <cmath>
|
|
#include <iostream>
|
|
|
|
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;
|
|
}
|