Возвести в степень Java (задача на методы в Java)
Необходимо написать метод, который бы возводил число в степень. И далее два числа, возведенные в степень, должны быть просуммированы, а результат выведен в консоль.

И, таким образом, в консоли мы должны увидеть число 73.
Решение:
public class Test < static int power ( int a , int b ) < int result = 1 ; for ( int i = 1 ; i < = b ; i ++ ) < result = result* a ; return result ; public static void main ( String [ ] args ) < System . out . println ( power ( 3 , 2 ) + power ( 2 , 6 ) ) ;
Если Вы запустите данный код на своем компьютере, в консоли Вы увидите:
Комментарии к задаче:
Изначально Вам необходимо вывести общую формулу возведения числа в степень.

Как видите, на картинке выше мы показали, что общая формула возведения в степень — это a в степени b. Поэтому в методе мы написали следующее:
static int power ( int a , int b ) < int result = 1 ; for ( int i = 1 ; i < = b ; i ++ ) < result = result* a ; return result ;
Мы использовали цикл for. Причем обратите внимание, что в цикле for мы написали i
И далее вызвали метод 2 раза для a = 3, b = 2 и a=2 и b=6. А также просуммировали power (3,2) и power(2,6).
public static void main ( String [ ] args ) < System . out . println ( power ( 3 , 2 ) + power ( 2 , 6 ) ) ;
И, таким образом, в консоли было выведено число 73.
Надеемся — наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.
- ← Четное или нечетное число java
- Найти минимальное число из 2 чисел Java →
Как выполнить возведение в степень в Java

Hello world! Погуглить что-нибудь или попросить помощи на форуме — обычное дело даже для опытного программиста. Но есть в разработке насколько базовые и простые темы, что их должен знать даже зеленый новичок. И вот одна из таких тем. Сегодня поговорим о том, как выполняется возведение в степень в языке Java.
Представим на секундочку, что вам дали задачу: найти число в определенной степени. Звучит довольно просто, но каким образом реализовать решение? Давайте рассмотрим самый распространенный способ и несколько альтернативных. А прежде чем “нырнуть” в решения, вначале вспомним, что такое возведение числа в степень:
Возведение в степень — это действие, при котором одно число умножается на само себя несколько раз. Число, которое умножается, называется основанием, а количество раз умножения — показателем. Ну а результат этого самоумножения основания называется возведением в степень. Например, для 8 — это 2 в третьей степени, поскольку 2х2×2=8. Возведение какого-либо числа во вторую степень указывает на то, что мы делаем его множителем два раза, и как правило эта степень называется квадратной. То есть 4 в квадрате = 4х4 = 16. Итак, память мы освежили, а теперь переходим непосредственно к способам применения pow в Java — метода для возведения в степень.
-
Math pow Самый простой способ решения поставленной задачи — использовать класс Math. Это то решение, которое вы будете использовать в большинстве случаев.
Класс Math содержит методы, связанные с тригонометрией, геометрией и другими аспектами математики. В нём методы реализованы как статические, поэтому можно сразу вызывать через имя класса Math без создания объекта класса. Как у нас будет выглядеть возведение в степень: public static int pow(int value, int powValue)
public static int pow(int value)
Вызов в main:
public static void main(String[] args)
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 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)
Оператор возведения в степень
При формировании отчета возникла необходимость использовать оператор возведения в произвольную степень. Оператор «^» воспринялся системой нормально, но когда проверял результат расчета, понял, что он работает не корректно. Проверил, написав в формуле просто 2^8. Результат получил 10.
В Java используется еще оператор «**». На нем программа выдала ошибку.
Функции pow() нет, или я не нашел скрипта, в которой она описана.
Можно было бы через экспоненту и натуральный логарифм посчитать, но этих функций я тоже не нашел..
Больше вариантов у меня не осталось, прошу помощи.
Возведение числа в степень через рекурсию
Для начала вспомним, какие частные случаи необходимо учесть при возведении в степень (очевидный вариант возведения положительного числа в положительную степень опустим):
- Возведение в отрицательную степень:
- х^(-p) = 1 / x^p
- x^0 = 1
- x^1 = x
- 0^p = 0
- 1^p = 1
- 0^p при p
Итак, начнем вычисление х^p. Сначала убедимся, что входные параметры не попадают под исключение (строка 2). Затем проверим частные случаи (строка 5):
public static double power(double x, int p) < if (x == 0 && p if (x == 1 || x == 0) return x;Вы могли обратить внимание на то, что мы упустили из виду один частный случай, а именно - возведение в первую степень x^1 = x.
Кроме того, поскольку речь идет о рекурсивном методе решения, логично было бы ожидать определение базового случая. Однако, прямо сейчас мы этого делать не будем, и уже скоро вы поймете, почему.Следующим шагом напишем логику работы возведения в степень. Первая строка - возведение в положительную, вторая - в отрицательную.
if (p > 1) return x * power(x, --p); if (p < 1) return 1 / x * power(x, ++p);Сейчас наша рекурсия будет отрабатывать, как задумано, пока степень p не станет равна 1. Это и есть наш последний частный случай! Поскольку при возведении в первую степень не требуется использовать рекурсию, мы можем сделать p = 1 нашим базовым случаем.
if (p > 1) return x * power(x, --p); if (p < 1) return 1 / x * power(x, ++p); return x;Конечно, мы могли бы определить данный базовый случай где-то вначале. Но в данном решении это не требуется, поскольку мы минуем условные операторы только при p = 1.
Весь код целиком:
public static double power(double x, int p) < if (x == 0 && p if (x == 1 || x == 0) return x; if (p > 1) return x * power(x, --p); if (p < 1) return 1 / x * power(x, ++p); return x; >На первый взгляд, может показаться трудным для понимания сценарий возведения в отрицательную степень. А именно, почему используется p < 1? Давайте разберемся.
Допустим, мы имеем x = 2 и p = -1. В таком случае, после первой итерации мы получим:if (p < 1) return 1 / 2 * power(2, 0);if (p < 1) return 1 / 2 * 1 / 2 * power(2, 1);По логике вещей, мы уже проскочили наш ответ, ведь 2^-1 = 1/2. Однако, поскольку на следующей итерации p = 1, результатом работы метода окажется x. Таким образом, в итоге наше выражение примет вид:
if (p < 1) return 1 / 2 * 1 / 2 * 2;И в итоге мы получим верный ответ.