

Math 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; }
Вызов в 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 i = 1; i <= powValue; i++) { result = result * value; } return result; }
Алгоритм весьма прост: мы как бы задаём точку отсчета result, и далее умножаем его на наше значение value столько раз, сколько отработает цикл с powValue (powValue количество раз)
Рекурсия
Следующий способ будет немного более экзотическим, но от этого не менее крутым.
Рекурсия — это средство, которое позволяет методу вызывать самого себя. В Java такой механизм присутствует, и такие методы, соответственно, называются рекурсивными.
Многие, если не все алгоритмические задачки, можно решать рекурсивно. Данная тоже не будет исключением, поэтому давайте взглянем, как можно возвести число в определенную степень рекурсивным способом:
public static int pow(int value, int powValue) { if (powValue == 1) { return value; } else { return value * pow(value, powValue - 1); } }
Как видим, у нас есть два случая:
- Условие выхода из рекурсии, или другими словами, когда у нас значение степени достигнет единицы, нас начнёт выбрасывать назад.
- Сам механизм умножения value на результат вызова этого же метода, но с powValue - 1.
Ну а теперь пришло время взглянуть на более ленивые способы, а именно — способы “из коробки”.
BigInteger
Главное назначение класса BigInteger состоит в хранении целых чисел произвольной величины, но при этом в нём есть различные арифметические методы, позволяющие вести работу с этими огромными (ну или не очень) числами.
Подробнее о BigInteger можно почитать вот в этой статье.
Итак, как же будет выглядеть возведение в степень с помощью BigInteger в Java?
public static int pow(int value, int powValue) { BigInteger a = new BigInteger(String.valueOf(value)); return a.pow(powValue).intValue(); }
Довольно просто и без заморочек, не правда ли?
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ