可能重复:
The most efficient way to implement an integer based power function pow(int, int)
我知道的唯一两种方法是,
单个for循环:非常慢
重写递归计算。
我想知道有比这两个算法更快的算法吗?任何按位技术都是受欢迎的。谢谢。
两种算法的C#演示:
class Math {
static public Int64 recurPow( Int64 a, Int64 e ) {
if ( e == 0 )
return 1;
if ( e == 1 )
return a;
if ( ( e % 2 ) == 0 )
return recurPow( a * a, e / 2 );
else
return recurPow( a * a, ( e - 1 ) / 2 );
}
static public Int64 iterPow( Int64 a, Int64 e ) {
Int64 result = a;
for ( Int64 i = 1; i < e; ++i )
result *= a;
return result;
}
}
答案 0 :(得分:2)
最佳算法是NP-complete,请参阅http://en.wikipedia.org/wiki/Addition-chain_exponentiation
该页面还链接到许多启发式算法,这些算法可以提供相当好的答案,您可能需要其中一个。
你也在做comp3212吗?