JavaRush /Java blogi /Random-UZ /Java-da qanday qilib eksponentatsiya qilish mumkin

Java-da qanday qilib eksponentatsiya qilish mumkin

Guruhda nashr etilgan
Salom Dunyo! Forumda biror narsa qidirish yoki yordam so'rash hatto tajribali dasturchi uchun ham odatiy holdir. Ammo rivojlanishda juda oddiy va sodda mavzular mavjudki, hatto yashil boshlang'ich ham ularni bilishi kerak. Va bu mavzulardan biri. Bugun biz Java-da eksponentatsiya qanday amalga oshirilishi haqida gaplashamiz. Java-da eksponentsiyani qanday qilish kerak - 1Tasavvur qilaylik, sizga vazifa berilgan: ma'lum darajada raqamni toping. Juda oddiy tuyuladi, ammo yechimni qanday amalga oshirish kerak? Keling, eng keng tarqalgan usulni va bir nechta alternativlarni ko'rib chiqaylik. Va yechimlarga "sho'ng'ishdan" oldin, keling, birinchi navbatda, raqamni kuchga ko'tarish nima ekanligini eslaylik: Java-da eksponentsiyani qanday qilish kerak - 2Kuchga ko'tarish - bu bitta raqamning o'zi bir necha marta ko'paytiriladigan harakatdir. Ko'paytiriladigan songa asos, necha marta ko'paytirilsa, ko'rsatkich deyiladi. Xo'sh, asosning o'z-o'zidan ko'payishi natijasi eksponentsiya deb ataladi. Masalan, 8 uchun u uchinchi darajaga 2 ga teng, chunki 2x2x2=8. Raqamni ikkinchi darajaga ko'tarish biz uni ikki marta koeffitsientga aylantirayotganimizni ko'rsatadi va qoida tariqasida bu daraja kvadrat daraja deb ataladi. Ya'ni, 4 kvadrat = 4x4 = 16. Shunday qilib, biz xotiramizni yangiladik va endi biz to'g'ridan-to'g'ri Java-da pow-dan foydalanish usullariga o'tamiz - ko'rsatkichni oshirish usuli.
  1. Matematik kuch

    Ushbu muammoni hal qilishning eng oson yo'li matematika sinfidan foydalanishdir. Bu ko'p hollarda foydalanadigan yechim.

    Как выполнить возведение в степень в Java - 3

    Matematika sinfida trigonometriya, geometriya va matematikaning boshqa jihatlariga oid usullar mavjud. Unda usullar statik sifatida amalga oshiriladi, shuning uchun ularni sinf ob'ektini yaratmasdan darhol Math sinfi nomi orqali chaqirishingiz mumkin.

    Eksponentatsiya nimaga o'xshaydi:

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

    Biz cast (int) turidan foydalanishimiz kerak edi, chunki Math sinfining bu usuli double tipidagi qiymatni qaytaradi (argumentlar ham double, lekin u yerda yashirin turdagi cast ishlatiladi).

    Va endi - bonus: qo'shimcha imkoniyatlar.

  2. Raqam kvadratining qiymati

    Keling, eng oddiy narsadan boshlaylik.

    Kvadratlash usuli quyidagicha yoziladi:

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

    Asosiy qo'ng'iroq:

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

    Hammasi shu - hech qanday murakkab yoki keraksiz narsa yo'q.

  3. Quvvat uchun raqam

    Ammo kvadrat raqam bizga kerak bo'lgan yagona narsa emas. Ko'pincha bizning ishimizda bizga ma'lum darajada raqam kerak bo'ladi, shuning uchun quyidagi biroz murakkabroq versiya, lekin maxsus java pow qiymati bilan:

    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;
    }

    Algoritm juda oddiy: biz natijani boshlang'ich nuqtasini o'rnatamiz, so'ngra uni powValue bilan tsikl qancha marta bajarilgan bo'lsa, uni qiymatimizga ko'paytiramiz (powValue necha marta)

  4. Rekursiya

    Keyingi usul biroz ekzotik bo'ladi, lekin undan kam emas.

    Как выполнить возведение в степень в Java - 4

    Rekursiya - bu usulning o'zini chaqirishiga imkon beruvchi xususiyat. Java-da bunday mexanizm mavjud va shunga ko'ra bunday usullar rekursiv deb ataladi.

    Hammasi bo'lmasa ham ko'p algoritmik masalalarni rekursiv yechish mumkin. Bu ham bundan mustasno emas, shuning uchun keling, qanday qilib rekursiv usulda raqamni ma'lum bir darajaga ko'tarish mumkinligini ko'rib chiqaylik:

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

    Ko'rib turganimizdek, bizda ikkita holat mavjud:

    1. Rekursiyadan chiqish sharti yoki boshqacha qilib aytganda, bizning daraja qiymatimiz bittaga yetganda, biz orqaga tashlanishni boshlaymiz.
    2. Xuddi shu usulni chaqirish natijasida qiymatni ko'paytirish mexanizmining o'zi, lekin powValue bilan - 1.

    Xo'sh, endi dangasa usullarni, ya'ni "qutidan tashqarida" usullarni ko'rib chiqish vaqti keldi.

  5. BigInteger

    BigInteger sinfining asosiy maqsadi ixtiyoriy o'lchamdagi butun sonlarni saqlashdir, lekin shu bilan birga u juda katta (yoki unchalik katta bo'lmagan) raqamlar bilan ishlash imkonini beruvchi turli arifmetik usullarga ega.

    Как выполнить возведение в степень в Java - 5

    BigInteger haqida ko'proq ma'lumotni ushbu maqolada o'qishingiz mumkin .

    Xo'sh, Java'da BigInteger yordamida eksponentatsiya qanday ko'rinishga ega bo'ladi?

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

    Juda oddiy va hech qanday muammosiz, shunday emasmi?

Xo'sh, bugun hammasi shu! Endi siz eksponentatsiya qilishning turli usullari haqida bilasiz. Qabul qilaman, bu qiyin mavzu emas edi :)
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION