В этой статье мы расскажем о том, как выполнять возведение в степень в языке программирования Java. Читателю будут представлены 5 актуальных способов решения поставленной задачи.
Но прежде чем мы приступим к перечислению способов, давайте для начала вспомним, что же вообще представляет собой операция возведения:
Таким образом, речь идет об умножении числа на свое же значение n-е количество раз. Умножаемое число — это основание степени, а количество операций по умножению — показатель. Результат такого перемножения и будет называться возведением в степень. Для числа 33 результат будет равен 27, так как 3 х 3 х 3 = 27.
Теперь давайте рассмотрим, как это все реализуется в языке программирования Java.
Math pow
Использование класса Math — наиболее простой вариант решения поставленной задачи. На практике его применяют в большинстве ситуаций. Public class Math включает в себя математические методы, в том числе те, которые связаны с геометрией и тригонометрией. В этом классе методы реализованы в качестве статических, следовательно, есть возможность вызывать их через имя класса Math, не создавая объект класса.
Смотрим код:
public static int pow(int value, int powValue) {
return (int) Math.pow(value, powValue);
}
Здесь пришлось использовать операцию приведения типа (int), т. к. этот метод класса Math осуществляет возвращение значения типа double
(аргументы, по сути, тоже double
, однако там применяется неявное приведение типа).
Теперь рассмотрим несколько дополнительных вариантов решения поставленной задачи.
Значение квадрата числа
Начнем с наиболее простого и напишем метод по возведению в квадрат:
Выполняем вызов в main:
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 a = 1; а <= powValue; а++) {
result = result * value;
}
return result;
}
Алгоритм несложен: мы как будто задаем точку отсчета result
, а потом умножаем его на значение value
столько, сколько будет работать цикл с powValue
.
Рекурсия
Следующий вариант является уже более экзотичным.
Вы должны знать, что рекурсия позволяет методу осуществлять вызов самого себя. В языке программирования Java такие методы тоже есть и называются они рекурсивными.
На практике рекурсивно можно решать многие алгоритмические задачи. Наша — не исключение. Давайте выполним возведение в степень рекурсивно:
Как видно из реализации, существуют 2 момента:
- Условие выхода из рекурсии. Если возведенное значение степени достигает единицы, нас выбрасывает назад.
- Непосредственный механизм умножения value на результат вызова того же самого метода, однако с powValue — 1.
Для совсем ленивых разработчиков существуют способы «из коробки». Рассмотрим один из них.
BigInteger
BigInteger — это класс, который обеспечивает хранение целых чисел произвольной величины. Здесь существуют разные арифметические методы, которые позволяют работать с числами.
Выполняем возведение посредством BigInteger в Java:
Тут все предельно просто и не нуждается в дополнительных разъяснениях, не так ли? Однако на сегодня все, теперь вы будете знать о разных способах, позволяющих возводить в степень в «Джава».
По материалам: https://javarush.ru/groups/posts/2828-kak-vihpolnitjh-vozvedenie-v-stepenjh-v-java.
Интересуют более продвинутые знания по языку программирования Java? Добро пожаловать на курсы в Otus!