Давайте рассмотрим это l oop
for (int i = 1; i < exponent; i = i + 1){
base= base * base;
}
После первой итерации, когда i равен 1, вы получите
base= base * base;
, то есть результат base ^ 2
.
Когда я = 2, у вас есть
base= base^2 * base^2;
, то есть результат является основанием ^ 4.
Когда я равен 3, у вас есть
base= base^4 * base^4;
то есть результат - база ^ 8.
Когда я равен 4, у вас есть
base= base^8 * base^8;
, то есть результат - база ^ 16.
It Кажется, что полученное значение слишком велико для размещения в объекте типа int.
Также не очень хорошая идея, когда аргумент передается по ссылке. И второй параметр должен иметь тип unsigned int.
Вот демонстрационная программа, которая показывает, как эта функция может быть реализована.
#include <iostream>
long long int raiseToPower( int base, unsigned int exponent )
{
long long int result = 1;
while ( exponent-- )
{
result *= base;
}
return result;
}
int main()
{
int base = 6;
std::cout << "6^5 is " << raiseToPower(base, 5) << std::endl;
return 0;
}
Его вывод
6^5 is 7776