JavaRush /Java блог /Random UA /Як виконати зведення в ступінь Java

Як виконати зведення в ступінь Java

Стаття з групи Random UA
Hello world! Погуглити щось або попросити допомоги на форумі — звичайна річ навіть для досвідченого програміста. Але є у розробці наскільки базові та прості теми, що їх має знати навіть зелений новачок. І ось одна з таких тем. Сьогодні поговоримо про те, як виконується зведення у ступінь у мові Java. Як виконати зведення в ступінь Java - 1Уявимо на секунду, що вам дали завдання: знайти число до певної міри. Звучить досить просто, але як реалізувати рішення? Давайте розглянемо найпоширеніший спосіб та кілька альтернативних. А перш ніж "пірнути" у рішення, спочатку пригадаємо, що таке зведення числа в ступінь: Як виконати зведення в ступінь Java - 2Зведення в ступінь - це дія, при якому одне число множиться на себе кілька разів. Число, яке множиться, називається основою, а кількість разів множення – показником. Ну а результат цього самомноження основи називається зведенням у ступінь. Наприклад, для 8 - це 2 в третьому ступені, оскільки 2х2x2 = 8. Зведення якогось числа в другий ступінь вказує на те, що ми робимо його множником двічі, і як правило цей ступінь називається квадратним. Тобто 4 у квадраті = 4х4 = 16. Отже, пам'ять ми освіжабо, а тепер переходимо безпосередньо до способів застосування pow Java — методу для зведення в ступінь.
  1. Math pow

    Найпростіший спосіб вирішення поставленого завдання – використовувати клас Math. Це те рішення, яке ви використовуватимете в більшості випадків.

    Як виконати зведення в ступінь Java - 3

    Клас Math містить методи, пов'язані з тригонометрією, геометрією та іншими аспектами математики. У ньому методи реалізовані як статичні, тому можна одразу викликати через ім'я класу Math без створення об'єкта класу.

    Як у нас виглядатиме зведення у ступінь:

    public static int pow(int value, int powValue) {
       return (int) Math.pow(value, powValue);
    }

    Нам довелося використовувати приведення типу (int), тому що даний метод класу Math повертає значення типу double (аргументи по ідеї теж double, але там використовується неявне приведення типу).

    А тепер – бонус: додаткові варіанти.

  2. Значення квадрата числа

    Почнемо, мабуть, із найпростішого.

    Ось так пишеться метод для зведення у квадрат:

    public static int pow(int value){
       return value*value;
    }

    Виклик у main:

    public static void main(String[] args) {
       System.out.println(Solution.pow(7));
    }

    Ось і все – нічого складного та зайвого.

  3. Число в мірі

    Але число у квадраті — далеко не все, що нам знадобиться. Найчастіше нам у роботі буде потрібно число саме певною мірою, тому далі слід трохи ускладнений варіант, але вже з кастомним 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 кількість разів)

  4. Рекурсія

    Наступний спосіб буде трохи екзотичнішим, але від цього не менш крутим.

    Як виконати зведення в ступінь Java - 4

    Рекурсія — це засіб, що дозволяє методу викликати себе. У Java такий механізм є, і такі методи, відповідно, називаються рекурсивними.

    Багато хто, якщо не всі алгоритмічні завдання, можна вирішувати рекурсивно. Дана теж не буде винятком, тому давайте поглянемо, як можна звести число у певний ступінь рекурсивним способом:

    public static int pow(int value, int powValue) {
       if (powValue == 1) {
           return value;
       } else {
           return value * pow(value, powValue - 1);
       }
    }

    Як бачимо, у нас є два випадки:

    1. Умова виходу з рекурсії, або інакше кажучи, коли в нас значення ступеня досягне одиниці, нас почне викидати назад.
    2. Сам механізм множення вказує на результат виклику цього ж методу, але з рівнимзначенням - 1.

    Ну а тепер настав час поглянути на лінивіші способи, а саме — способи "з коробки".

  5. BigInteger

    Головне призначення класу BigInteger полягає у зберіганні цілих чисел довільної величини, але при цьому в ньому є різні арифметичні методи, що дозволяють працювати з цими величезними (ну чи не дуже) числами.

    Як виконати зведення в ступінь Java - 5

    Докладніше про BigInteger можна почитати ось у цій статті .

    Отже, як виглядатиме зведення в ступінь за допомогою BigInteger в Java?

    public static int pow(int value, int powValue) {
       BigInteger a = new BigInteger(String.valueOf(value));
      return a.pow(powValue).intValue();
    }

    Досить просто і без проблем, чи не так?

Ну ось, сьогодні все! Тепер ви знаєте про різні способи зведення в ступінь. Погодьтеся, це була нескладна тема:)
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ