JavaRush /Java Blog /Random-TL /Paano Mag-Exponentiate sa Java

Paano Mag-Exponentiate sa Java

Nai-publish sa grupo
Hello mundo! Ang pag-googling ng isang bagay o paghingi ng tulong sa isang forum ay isang pangkaraniwang bagay kahit para sa isang bihasang programmer. Ngunit may mga paksa sa pag-unlad na napakasimple at simple na kahit isang berdeng baguhan ay dapat malaman ang mga ito. At narito ang isa sa mga paksang iyon. Ngayon ay pag-uusapan natin kung paano ginagawa ang exponentiation sa Java. Paano gawin ang exponentiation sa Java - 1Isipin natin sa isang segundo na binigyan ka ng isang gawain: maghanap ng isang numero sa isang tiyak na antas. Mukhang simple, ngunit paano ipatupad ang solusyon? Tingnan natin ang pinakakaraniwang paraan at ilang alternatibo. At bago tayo "sumisid" sa mga solusyon, tandaan muna natin kung ano ang pagpapataas ng isang numero sa isang kapangyarihan: Paano gawin ang exponentiation sa Java - 2Ang pagtaas sa isang kapangyarihan ay isang aksyon kung saan ang isang numero ay pinarami ng sarili nitong ilang beses. Ang bilang na pinarami ay tinatawag na base, at ang bilang ng beses na pinarami ito ay tinatawag na exponent. Well, ang resulta ng self-multiply na ito ng base ay tinatawag na exponentiation. Halimbawa, para sa 8 ito ay 2 sa ikatlong kapangyarihan, dahil 2x2x2=8. Ang pagtaas ng isang numero sa pangalawang kapangyarihan ay nagpapahiwatig na ginagawa namin itong isang kadahilanan nang dalawang beses, at bilang isang panuntunan, ang kapangyarihang ito ay tinatawag na isang parisukat na kapangyarihan. Iyon ay, 4 squared = 4x4 = 16. Kaya, na-refresh namin ang aming memorya, at ngayon ay direktang lumipat kami sa mga paraan ng paggamit ng pow sa Java - isang paraan para sa exponentiation.
  1. Math pow

    Ang pinakamadaling paraan upang malutas ang problemang ito ay ang paggamit ng klase sa Math. Ito ang solusyon na gagamitin mo sa karamihan ng mga kaso.

    Paano Mag-Exponentiate sa Java - 3

    Ang klase ng Math ay naglalaman ng mga pamamaraan na nauugnay sa trigonometrya, geometry, at iba pang aspeto ng matematika. Sa loob nito, ang mga pamamaraan ay ipinatupad bilang static, kaya maaari mong agad na tawagan ang mga ito sa pamamagitan ng pangalan ng klase ng Math nang hindi gumagawa ng object ng klase.

    Ano ang hitsura ng exponentiation:

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

    Kinailangan naming gumamit ng isang uri ng cast (int), dahil ang pamamaraang ito ng klase ng Math ay nagbabalik ng isang halaga ng uri ng doble (doble rin ang mga argumento, ngunit isang implicit na uri ng cast ang ginagamit doon).

    At ngayon - isang bonus: karagdagang mga pagpipilian.

  2. Ang halaga ng parisukat ng isang numero

    Magsimula tayo, marahil, sa pinakasimpleng bagay.

    Ito ay kung paano isinulat ang paraan para sa pag-squaring:

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

    Tumawag sa pangunahing:

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

    Iyon lang - walang kumplikado o hindi kailangan.

  3. Numero sa kapangyarihan

    Ngunit ang squared number ay hindi lang ang kailangan natin. Kadalasan sa aming trabaho kakailanganin namin ang isang numero sa isang tiyak na antas, kaya ang sumusunod ay isang bahagyang mas kumplikadong bersyon, ngunit may isang pasadyang halaga ng 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;
    }

    Ang algorithm ay napaka-simple: itinakda namin ang resulta ng panimulang punto, at pagkatapos ay i-multiply ito sa aming halaga nang maraming beses habang tumatakbo ang loop na may powValue (bilang ng beses ng powValue)

  4. Recursion

    Ang susunod na paraan ay magiging mas kakaiba, ngunit hindi gaanong cool.

    Paano Mag-Exponentiate sa Java - 4

    Ang recursion ay isang feature na nagbibigay-daan sa isang paraan na tawagan ang sarili nito. Sa Java, ang gayong mekanismo ay naroroon, at ang mga naturang pamamaraan ay naaayon na tinatawag na recursive.

    Marami, kung hindi man lahat, ang mga problema sa algorithm ay maaaring malutas nang recursively. Ang isang ito ay hindi rin magiging eksepsiyon, kaya tingnan natin kung paano mo maitataas ang isang numero sa isang tiyak na kapangyarihan sa isang recursive na paraan:

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

    Tulad ng nakikita natin, mayroon tayong dalawang kaso:

    1. Ang kundisyon para sa pag-alis sa recursion, o sa madaling salita, kapag ang halaga ng ating antas ay umabot sa isa, magsisimula tayong itapon pabalik.
    2. Ang mekanismo mismo para sa pagpaparami ng halaga sa pamamagitan ng resulta ng pagtawag sa parehong paraan, ngunit may powValue - 1.

    Buweno, ngayon ay oras na upang tingnan ang mas tamad na mga pamamaraan, ibig sabihin, ang mga "out of the box" na mga pamamaraan.

  5. BigInteger

    Ang pangunahing layunin ng klase ng BigInteger ay mag-imbak ng mga integer na may di-makatwirang laki, ngunit sa parehong oras mayroon itong iba't ibang mga pamamaraan ng aritmetika na nagbibigay-daan sa iyo upang gumana sa mga malalaking (o hindi masyadong malaki) na mga numero.

    Paano Mag-Exponentiate sa Java - 5

    Maaari kang magbasa nang higit pa tungkol sa BigInteger sa artikulong ito .

    Kaya ano ang magiging hitsura ng exponentiation gamit ang BigInteger sa Java?

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

    Medyo simple at walang anumang problema, hindi ba?

Well, iyon lang para sa araw na ito! Ngayon ay alam mo na ang tungkol sa iba't ibang paraan ng pag-exponent. Sumang-ayon, hindi ito isang mahirap na paksa :)
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION