你好世界!即使对于经验丰富的程序员来说,谷歌搜索或在论坛上寻求帮助也是很常见的事情。但开发中的一些主题非常基础和简单,即使是新手也应该了解它们。这是这些主题之一。今天我们将讨论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