問題形貌
給定一個double範例的浮點數a和int範例的整數m。求a的m次方。
剖析
能夠採用暴力的解決辦法,把a乘以m次就能夠獲得效果,但我們一定不是想要如許的要領。
視察相乘的歷程,比方a^7,實在能夠寫成a^1*a^2*a^4,而且a^4=a^2*a^2,
a^2=a*a,我們能夠應用高次方的冪能夠由低次方的冪相乘得來。
代碼完成
function Power(a, m)
{
var isNegative = false;
if(m === 0)
return 1;
else if(m < 0){
if(a === 0)
throw new Error();
else{
isNegative = true;
m = -m;
}
}
var res = 1, cur = a;
while(m !== 0) {
if(m & 1 === 1){
res = res * cur;
}
cur = cur * cur;
m = m >>> 1;
}
return isNegative ? 1/res : res;
}