可能重複:
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;
}
}
@John Zwinck:非常感謝。我搜索了3次,但無法找到該線程。 – Chan 2011-04-24 23:42:56
最快的算法幾乎總是一個預先計算的表查找:-) – paxdiablo 2011-04-25 00:01:31
我相信第二次遞歸調用應該是這樣'recurPow(a * a,(e - 1)/ 2)* a'。在a = 2上測試它,e = 5 – 2013-03-05 22:08:30