pow
работает только с числами с плавающей запятой (на самом деле double
с). Если вы хотите получить полномочия целых чисел, а основание неизвестно, как показатель степени 2
, вам придется бросить свои собственные.
Обычно тупой путь достаточно хорош.
int power(int base, unsigned int exp) {
int i, result = 1;
for (i = 0; i < exp; i++)
result *= base;
return result;
}
Вот рекурсивное решение, которое занимает O(log n)
пространство и время вместо простого O(1)
пространство O(n)
время:
int power(int base, int exp) {
if (exp == 0)
return 1;
else if (exp % 2)
return base * power(base, exp - 1);
else {
int temp = power(base, exp / 2);
return temp * temp;
}
}