你好世界!即使對於經驗豐富的程式設計師來說,Google搜尋或在論壇上尋求幫助也是很常見的事情。但開發中的一些主題非常基礎和簡單,即使是新手也應該了解它們。這是這些主題之一。今天我們將討論 Java 中如何執行求冪。 讓我們想像一下,您收到了一項任務:找到一個達到一定程度的數字。聽起來很簡單,但是如何實施解決方案呢?讓我們看看最常見的方法和幾種替代方法。在我們「深入」解決方案之前,讓我們先記住什麼是數字的冪: 冪是一個數字與其自身相乘多次的動作。相乘的數稱為底數,相乘的次數稱為指數。好吧,這種底數自乘的結果稱為求冪。例如,對於 8,它是 2 的三次方,因為 2x2x2=8。計算一個數字的二次方表示我們將其變成兩倍,通常這個冪稱為平方冪。也就是說,4 的平方 = 4x4 = 16。所以,我們已經刷新了我們的記憶,現在我們直接轉向在 Java 中使用 pow 的方法 - 一種求冪的方法。
-
數學戰俘
解決這個問題最簡單的方法是使用 Math 類別。這是您在大多數情況下都會使用的解決方案。
Math 類別包含與三角學、幾何學和數學其他方面相關的方法。其中,方法被實作為靜態的,因此您可以透過Math類別的名稱立即呼叫它們,而無需建立類別物件。
求冪是什麼樣的:
public static int pow(int value, int powValue) { return (int) Math.pow(value, powValue); }
我們必須使用類型轉換 (int),因為 Math 類別的該方法會傳回 double 類型的值(參數也是 double,但使用了隱式類型轉換)。
現在 - 一個額外的好處:額外的選項。
-
數字的平方的值
也許讓我們從最簡單的事情開始。
平方方法的寫法如下:
public static int pow(int value){ return value*value; }
在主程式中呼叫:
public static void main(String[] args) { System.out.println(Solution.pow(7)); }
僅此而已 - 沒有什麼複雜或不必要的。
-
數的冪
但平方數並不是我們所需要的全部。在我們的工作中,大多數情況下我們會需要一定程度的數字,因此下面是一個稍微複雜的版本,但具有自訂的 java pow 值:
public static void main(String[] args) { System.out.println(Solution.pow(7, 4)); } public static int pow(int value, int powValue) { int result = 1; for (int i = 1; i <= powValue; i++) { result = result * value; } return result; }
演算法非常簡單:我們設定起點結果,然後將其與我們的值相乘,次數與 powValue 迴圈運行的次數相同(powValue 次數)
-
遞迴
下一個方法會更奇特一些,但同樣很酷。
遞歸是一種允許方法呼叫自身的函數。在Java中,存在這樣的機制,因此這種方法被稱為遞歸。
許多(如果不是全部)演算法問題都可以遞歸地解決。這也不例外,所以讓我們看看如何以遞歸方式將數字提高到某個冪:
public static int pow(int value, int powValue) { if (powValue == 1) { return value; } else { return value * pow(value, powValue - 1); } }
正如我們所看到的,我們有兩種情況:
- 退出遞歸的條件,或者換句話說,當我們的度值達到1時,我們將開始被拋回。
- 此機製本身用於將值乘以呼叫相同方法的結果,但使用 powValue - 1。
好吧,現在是時候看看更懶的方法了,即“開箱即用”的方法。
-
大整數
BigInteger 類別的主要用途是儲存任意大小的整數,但同時它具有各種算術方法,可讓您處理這些巨大(或不太巨大)的數字。
您可以在本文中閱讀有關 BigInteger 的更多資訊。
那麼在 Java 中使用 BigInteger 求冪會是什麼樣子呢?
public static int pow(int value, int powValue) { BigInteger a = new BigInteger(String.valueOf(value)); return a.pow(powValue).intValue(); }
非常簡單,沒有任何問題,不是嗎?
GO TO FULL VERSION