传统解法
我们知道求一个数的幂可以表示为(ab)意思是a的b次方。如28运算结果是256运用for循环8次完全可以得到正确结果,但当b的值为10000,1000000时我们要得到幂函数的结果就相当麻烦了,那么是否有一种简单的方法可以使我们迅速得到幂函数的结果呢? 这就是今天我们要介绍的快速幂算法!
快速幂简介
如28可以等价于((((22)2)2)2),这时只需进行四次运算就可以得到本需要八次运算才可以得到的结果,在b数值较小的情况下我们不能较为直接的感觉到快速幂算法的优异性,但当b为10000甚至更大时速度会大大提高,减少时间复杂度一半。如当b=100000时,运用快速幂算法,直接减少了50000次运算,效率大大提高。
代码实现
当b为偶数时,它可以被分成一个个相同的(2)次模块。但当b为奇数时,b-1为偶数,算出结果后再乘以自身就可以得到运算结果。
long long fastPower(long long base, long long power) {
long long result = 1;
while (power > 0)
{
if (power % 2 == 0)//如果指数为偶数
{
power = power / 2; //把指数缩小