JavaRush /จาวาบล็อก /Random-TH /วิธีการยกกำลังใน Java

วิธีการยกกำลังใน Java

เผยแพร่ในกลุ่ม
สวัสดีชาวโลก! การใช้ Google หรือการขอความช่วยเหลือในฟอรัมถือเป็นเรื่องปกติ แม้แต่กับโปรแกรมเมอร์ที่มีประสบการณ์ก็ตาม แต่มีหัวข้อในการพัฒนาที่เป็นพื้นฐานและเรียบง่ายที่แม้แต่ผู้เริ่มต้นสีเขียวก็ควรรู้ และนี่คือหนึ่งในหัวข้อเหล่านั้น วันนี้เราจะพูดถึงวิธีการยกกำลังใน Java วิธีทำการยกกำลังใน Java - 1ลองนึกภาพสักครู่ว่าคุณได้รับมอบหมายงาน: ค้นหาตัวเลขในระดับหนึ่ง ฟังดูค่อนข้างง่าย แต่จะนำวิธีแก้ปัญหาไปใช้อย่างไร? ลองดูวิธีการทั่วไปและทางเลือกต่างๆ และก่อนที่เราจะ "เจาะลึก" วิธีแก้ปัญหา ก่อนอื่นมาจำก่อนว่าการบวกเลขยกกำลังคืออะไร วิธีทำการยกกำลังใน Java - 2การยกกำลังคือการกระทำที่จำนวนหนึ่งคูณด้วยตัวมันเองหลายครั้ง จำนวนที่คูณเรียกว่าฐาน และจำนวนครั้งที่คูณเรียกว่าเลขชี้กำลัง ผลลัพธ์ของการคูณฐานตัวเองนี้เรียกว่าการยกกำลัง ตัวอย่างเช่น สำหรับ 8 มันคือ 2 ยกกำลังสาม เนื่องจาก 2x2x2=8 การยกจำนวนขึ้นเป็นกำลังสองบ่งบอกว่าเรากำลังทำให้มันเป็นตัวประกอบสองเท่า และตามกฎแล้วยกกำลังนี้เรียกว่ากำลังสอง นั่นคือ 4 กำลังสอง = 4x4 = 16 ดังนั้นเราจึงรีเฟรชหน่วยความจำของเรา และตอนนี้เราย้ายไปยังวิธีใช้ pow ใน Java โดยตรงซึ่งเป็นวิธีการยกกำลัง
  1. ธารคณิต

    วิธีที่ง่ายที่สุดในการแก้ปัญหานี้คือการใช้วิชาคณิตศาสตร์ นี่คือวิธีแก้ปัญหาที่คุณจะใช้ในกรณีส่วนใหญ่

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

    ชั้นเรียนคณิตศาสตร์ประกอบด้วยวิธีการที่เกี่ยวข้องกับตรีโกณมิติ เรขาคณิต และแง่มุมอื่นๆ ของคณิตศาสตร์ ในนั้นเมธอดจะถูกนำไปใช้เป็นแบบคงที่ ดังนั้นคุณสามารถเรียกเมธอดเหล่านั้นผ่านชื่อของคลาส Math ได้ทันทีโดยไม่ต้องสร้างคลาสอ็อบเจ็กต์

    การยกกำลังมีลักษณะอย่างไร:

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

    เราต้องใช้ type cast (int) เนื่องจากเมธอดของคลาส Math นี้ส่งคืนค่าประเภท double (อาร์กิวเมนต์ก็เป็นสองเท่าเช่นกัน แต่มีการใช้ประเภทโดยนัยที่นั่น)

    และตอนนี้ - โบนัส: ตัวเลือกเพิ่มเติม

  2. ค่าของกำลังสองของตัวเลข

    เรามาเริ่มกันด้วยสิ่งที่ง่ายที่สุด

    นี่คือวิธีการเขียนวิธีการยกกำลังสอง:

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

    โทรเข้าหลัก:

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

    อัลกอริธึมนั้นง่ายมาก: เราตั้งค่าผลลัพธ์ของจุดเริ่มต้นแล้วคูณด้วยค่าของเราหลาย ๆ ครั้งในขณะที่ลูปที่มี 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. กลไกในการคูณค่าด้วยผลลัพธ์ของการเรียกวิธีเดียวกัน แต่ด้วย powValue - 1

    ตอนนี้ได้เวลาดูวิธีการแบบ Lazy มากขึ้น ซึ่งก็คือวิธี "นอกกรอบ"

  5. จำนวนเต็มใหญ่

    วัตถุประสงค์หลักของคลาส 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();
    }

    ค่อนข้างง่ายและไม่มีปัญหาใช่ไหม?

นั่นคือทั้งหมดสำหรับวันนี้! ตอนนี้คุณรู้เกี่ยวกับวิธีการยกกำลังหลายวิธีแล้ว เห็นด้วยนี่ไม่ใช่หัวข้อยาก :)
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION