快速幂

快速幂顾名思义,就是计算某个数的n次幂
时间复杂度为O(log n) 比常规的O(n)的算法速度有极大的提高。
下面放上代码

LEVEL1

使用二分对幂运算进行处理

long long fastPower(long long base,long long power)
{
	if (power == 1ll)
		return base;
	else
	{
		if (power % 2 == 0)
		{
			return fastPower(base, power / 2) * fastPower(base, power / 2);
		}
		else
		{
			return fastPower(base, power / 2) * fastPower(base, power / 2) * base;
		}
	}
}

LEVEL2

递归算法确实有点屎了,
数据大了貌似很容易爆栈;
放下优化代码(使用递推)

long long fastPower(long long base,long long power)
{
	long long result = 1;
	while (power)
	{
		if (power % 2 == 1)
			result = result * base;
		power /= 2;
		base = base * base;
	}
	return result;
}

LEVEL3

没错代码还可以使用位运算进行优化
放上终极代码

long long fastPower(long long base,long long power)
{
	long long result = 1;
	while (power)
	{
		if (power & 1)
			result = result * base;
		power >>= 1;
		base = base * base;
	}
	return result;
}

我们可以测试一下该代码的效率,简直恐怖!!!
可能这就是算法的魅力吧!!!

posted @ 2021-03-12 15:12  ReyHan  阅读(76)  评论(0)    收藏  举报