参考博客
https://blog.csdn.net/qq_19782019/article/details/85621386
简单来说就是进行二分,底数和指数,例如 2的8次方,循环一次变成 2*2的4次方,直到幂 = 0;(注意要区分奇偶),奇数的时候假如 2的7次方 就变成6+1,把 2的一次方 先附给result即可
拿一道剑指offer的例题举例子:
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
public class Solution {public static double Power(double base, int exponent) {double result = 1.0;int exponentN = exponent < 0 ? - exponent : exponent; //把幂取绝对值,如果幂是负数就输出1/resultwhile(exponentN > 0){if((exponentN & 1) == 1){result = result * base; //把减去的一个base赋给结果,相乘}exponentN /= 2;base *= base;}return exponent < 0 ? 1/result : result;}
}