求解 n^p 的算法如下:
unsigned long long power(unsigned n, unsigned p)
{
unsigned long long x=1, y=n;
while(p > 0)
{
if(p&1) x *= y;
y *= y;
p >>= 1;
}
return x;
}
有人能解释一下这个算法背后的逻辑/数学原理吗?我知道它可以工作并已经对几个测试案例进行了演示。我的意思是,它的工作原理是什么,相较于一般的朴素方法,它为何效率更高。