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(); }
Довольно просто и без заморочек, не правда ли?
Эллеонора Керри
41 уровень
Как выполнить возведение в степень в Java
Hello world!
Погуглить что-нибудь или попросить помощи на форуме — обычное дело даже для опытного программиста. Но есть в разработке насколько базовые и простые темы, что их должен знать даже зеленый новичок. И вот одна из таких тем. Сегодня поговорим о том, как выполняется возведение в степень в языке Java.
Представим на секундочку, что вам дали задачу: найти число в определенной степени. Звучит довольно просто, но каким образом реализовать решение? Давайте рассмотрим самый распространенный способ и несколько альтернативных.
А прежде чем “нырнуть” в решения, вначале вспомним, что такое возведение числа в степень:
Возведение в степень — это действие, при котором одно число умножается на само себя несколько раз. Число, которое умножается, называется основанием, а количество раз умножения — показателем. Ну а результат этого самоумножения основания называется возведением в степень.
Например, для 8 — это 2 в третьей степени, поскольку 2х2x2=8.
Возведение какого-либо числа во вторую степень указывает на то, что мы делаем его множителем два раза, и как правило эта степень называется квадратной. То есть 4 в квадрате = 4х4 = 16.
Итак, память мы освежили, а теперь переходим непосредственно к способам применения pow в Java — метода для возведения в степень.
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Mark Barduk
1 февраля, 10:06
Стянуто под чистую отсюда
https://otus.ru/journal/kak-vozvodit-v-stepen-v-java/
0
borodadar
4 февраля, 15:16
Даты публикаций посмотри и сравни
+6
Roman
20 декабря 2023, 13:26
Цитата: "Возведение в степень — это действие, при котором одно число умножается на само себя несколько раз. Число, которое умножается, называется основанием, а количество раз умножения — показателем. Ну а результат этого самоумножения основания называется возведением в степень."
Показатель степени - количество раз взятия числа множителем, а количество раз умножения всегда на единицу меньше показателя степени. Ниже в статье есть правильное определение, но как-то вскользь и незаметно
0
kalkulator¹
4 ноября 2022, 17:53
package ua.javarush.task.pro.task09.task0906;
import java.util.regex.Pattern;
/*
Двійковий конвертер
*/
public class Solution {
public static void main(String[] args) {
int decimalNumber = Integer.MAX_VALUE;
System.out.println("Десяткове число " + decimalNumber + " дорівнює двійковому числу " + toBinary(decimalNumber));
String binaryNumber = "1111111111111111111111111111111";
System.out.println("Двійкове число " + binaryNumber + " дорівнює десятковому числу " + toDecimal(binaryNumber));
}
public static String toBinary(int decimalNumber) {
String binaryNumber = "";
if (decimalNumber <= 0) {
return binaryNumber;
}
while(decimalNumber != 0){
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber /2;
}
return binaryNumber;
}
public static int toDecimal(String binaryNumber) {
int decimalNumber = 0;
if(binaryNumber == null) {
return decimalNumber;
}
for(int i = 0; i < binaryNumber.length();i++){
int g = binaryNumber.length() - i;
decimalNumber = (int)(decimalNumber + g * Math.pow(2, i));
}
return decimalNumber;
}
}
в консоль виводить правильно но задача на проходить по одному пункту toDesigma(String)
це друга задача
0
Сергей
20 февраля 2022, 19:53
Приведенный в статье рекурсивный метод нахождения степени произвольного целого числа не сработает если в качестве второго параметра передать ноль:
+1
Константин
16 апреля 2022, 05:52
Да, проверять нужно не на 1, а на 0. Если делать на 1, то метод еще и степень находит неверно.
0
hidden #1651932
19 октября 2020, 09:19
А теперь расскажите кто-нибудь как возводить числа в отрицательную степень без Math и прочего! =)
0
Сергей Enterprise Java Developer в Фрезия-Лайт
15 ноября 2021, 13:53
Сосчитать положительную степень и 1 поделить на полученный результат
+1
Oleg Savenko
16 июля 2020, 17:56
Есть чудесный способ Math.exp( step * Math.log(x))
+4
Dante
14 июля 2020, 19:32
Сошел с ума пытаясь понять рекурсию. Когда 2 в 2 понятно. Дальше мозг был сломан
0
Serp2015 conceptor в Тольятти
15 июля 2020, 07:31
Как я понял при использовании рекурсии действия производятся в обратном порядке от привычного, т.е. нам привычно считать от меньшего к большему а там от большего к меньшему.
0
Ayrat
17 августа 2020, 08:42
мало того, так это код ещё и не выполняется. В IDE не выполнится, ошибка на ошибке.
0
Will Fight
13 ноября 2020, 15:55
Чтобы понять рекурсию, надо сначала понять рекурсию
+8