一種求正整數(shù)冪的高效算法詳解
更新時間:2013年06月04日 17:27:11 作者:
本篇文章是對java中一種求正整數(shù)冪的高效算法進行了詳細的分析介紹,需要的朋友參考下
核心思想是
當n為偶數(shù)時,a^n = a^n/2 × a^n/2
當n為奇數(shù)時,a^n = a^(n-1)/2 × a^(n-1)/2 × a
代碼如下:
public class Power {
public static void main(String[] args) {
System.out.println(power(5.5,5));
}
private static double power(double base, int exponent) {
if (exponent == 0)
return 1;
if (exponent == 1)
return base;
double result = power(base, exponent >> 1);
result *= result;
if ((exponent & 0x1) == 1)
result *= base;
return result;
}
}
代碼中還使用右移運算來代替除以2,用位與運算來代替求余判斷奇偶,這樣都要算法更加效率的多。
當n為偶數(shù)時,a^n = a^n/2 × a^n/2
當n為奇數(shù)時,a^n = a^(n-1)/2 × a^(n-1)/2 × a
代碼如下:
復(fù)制代碼 代碼如下:
public class Power {
public static void main(String[] args) {
System.out.println(power(5.5,5));
}
private static double power(double base, int exponent) {
if (exponent == 0)
return 1;
if (exponent == 1)
return base;
double result = power(base, exponent >> 1);
result *= result;
if ((exponent & 0x1) == 1)
result *= base;
return result;
}
}
代碼中還使用右移運算來代替除以2,用位與運算來代替求余判斷奇偶,這樣都要算法更加效率的多。
您可能感興趣的文章:
- js判斷輸入是否為正整數(shù)、浮點數(shù)等數(shù)字的函數(shù)代碼
- 正則文本框只能輸入正整數(shù)
- JavaScript正則表達式校驗非零的正整數(shù)實例
- jquery 正整數(shù)數(shù)字校驗正則表達式
- JS只能輸入正整數(shù)的簡單實例
- 只能輸入小于最大數(shù)且是正整數(shù)的腳本
- 使用JavaScript判斷用戶輸入的是否為正整數(shù)(兩種方法)
- JavaScript正則表達式校驗非正整數(shù)實例
- C++初學(xué)者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)
- C++求四個正整數(shù)最大公約數(shù)的方法
- JQuery判斷正整數(shù)整理小結(jié)(jQuery 文本框中只能輸入正整數(shù))
相關(guān)文章
子類繼承父類時構(gòu)造函數(shù)相關(guān)問題解析
這篇文章主要介紹了子類繼承父類時構(gòu)造函數(shù)相關(guān)問題解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11Mybatis-Spring連接mysql 8.0配置步驟出錯的解決方法
這篇文章主要為大家詳細介紹了Mybatis-Spring連接mysql 8.0配置步驟出錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06