基础版:
int power_fun(int base_number, int power)
{
int ans = 1;
for (int i = 1; i <= power; i++) {
ans *= base_number;
}
return ans;
}
时间复杂度:N
进阶版:
1.分治:
对幂指数进行不断的二分
例如:
t^4=t^2 * t^2;
t^2=t^1 * t^1;
int power_fun(int base_number, int power)
{
if (power == 0)return 1;
if (power == 1)return base_number;
int tmp = power_fun(base_number, power / 2) * power_fun(base_number, power / 2);
if (power% 2 == 0)return tmp;
else return tmp * base_number;//如果是奇数则需要再乘上自身一次,因为如果为奇数,例如为5/2 则会向下取整为2 少乘一次;
}
时间复杂度: >log2(N)
2.二进制法求幂:
int power_fun(int base_number, int power)
{
int ans = 1, tmp = base_number;//从底数开始乘,不停自乘
while (power != 0) //指数不是0
{