JavaRush /Blog Java /Random-VI /Cách lũy thừa trong Java

Cách lũy thừa trong Java

Xuất bản trong nhóm
Chào thế giới! Tìm kiếm thông tin gì đó trên Google hoặc yêu cầu trợ giúp trên diễn đàn là điều bình thường ngay cả đối với một lập trình viên có kinh nghiệm. Nhưng có những chủ đề trong quá trình phát triển rất cơ bản và đơn giản mà ngay cả người mới bắt đầu thực hiện công việc thân thiện với môi trường cũng nên biết. Và đây là một trong những chủ đề đó. Hôm nay chúng ta sẽ nói về cách thực hiện phép lũy thừa trong Java. Как выполнить возведение в степень в Java - 1Hãy tưởng tượng trong giây lát rằng bạn được giao một nhiệm vụ: tìm một số ở một mức độ nhất định. Nghe có vẻ khá đơn giản nhưng thực hiện giải pháp như thế nào? Hãy xem xét phương pháp phổ biến nhất và một số lựa chọn thay thế. Và trước khi chúng ta “đi sâu” vào các giải pháp, trước tiên chúng ta hãy nhớ nâng lũy ​​thừa của một số là gì: Как выполнить возведение в степень в Java - 2Nâng lũy ​​thừa là một hành động trong đó một số được nhân với chính nó nhiều lần. Số được nhân gọi là cơ số, số lần nhân nó gọi là số mũ. Chà, kết quả của việc tự nhân cơ số này được gọi là lũy thừa. Ví dụ, với 8 thì nó bằng 2 mũ ba, vì 2x2x2=8. Việc nâng một số lên lũy thừa thứ hai cho thấy rằng chúng ta đang biến nó thành thừa số hai lần và theo quy luật, lũy thừa này được gọi là lũy thừa bình phương. Nghĩa là, 4 bình phương = 4x4 = 16. Vì vậy, chúng ta đã làm mới bộ nhớ của mình và bây giờ chúng ta chuyển thẳng sang cách sử dụng pow trong Java - một phương pháp lũy thừa.
  1. Toán học

    Cách dễ nhất để giải quyết vấn đề này là sử dụng lớp Math. Đây là giải pháp bạn sẽ sử dụng trong hầu hết các trường hợp.

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

    Lớp Toán chứa các phương pháp liên quan đến lượng giác, hình học và các khía cạnh khác của toán học. Trong đó, các phương thức được triển khai dưới dạng tĩnh nên bạn có thể gọi ngay chúng thông qua tên của lớp Math mà không cần tạo đối tượng lớp.

    Phép lũy thừa trông như thế nào:

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

    Chúng tôi phải sử dụng kiểu ép kiểu (int), vì phương thức này của lớp Math trả về giá trị kiểu double (các đối số cũng là double, nhưng kiểu ép kiểu ngầm được sử dụng ở đó).

    Và bây giờ - phần thưởng: các tùy chọn bổ sung.

  2. Giá trị bình phương của một số

    Có lẽ hãy bắt đầu với điều đơn giản nhất.

    Đây là cách viết phương pháp bình phương:

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

    Gọi vào phần chính:

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

    Chỉ vậy thôi - không có gì phức tạp hoặc không cần thiết.

  3. Số điện

    Nhưng số bình phương không phải là tất cả những gì chúng ta cần. Thông thường, trong công việc của mình, chúng ta sẽ cần một con số ở một mức độ nhất định, vì vậy phần tiếp theo là một phiên bản phức tạp hơn một chút, nhưng với giá trị java pow tùy chỉnh:

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

    Thuật toán rất đơn giản: chúng tôi đặt kết quả điểm bắt đầu và sau đó nhân nó với giá trị của chúng tôi nhiều lần khi vòng lặp chạy powValue (số lần powValue)

  4. đệ quy

    Phương pháp tiếp theo sẽ kỳ lạ hơn một chút nhưng không kém phần ngầu.

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

    Đệ quy là một tính năng cho phép một phương thức gọi chính nó. Trong Java, có một cơ chế như vậy và các phương thức như vậy được gọi là đệ quy.

    Многие, если не все алгоритмические задачки, можно решать рекурсивно. Данная тоже не будет исключением, поэтому давайте взглянем, How можно возвести число в определенную степень рекурсивным способом:

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

    Как видим, у нас есть два случая:

    1. Условие выхода из рекурсии, or другими словами, когда у нас meaning степени достигнет единицы, нас начнёт выбрасывать назад.
    2. Сам механизм умножения value на результат вызова этого же метода, но с powValue - 1.

    Ну а теперь пришло время взглянуть на более ленивые способы, а именно — способы “из коробки”.

  5. BigInteger

    Главное наmeaning класса BigInteger состоит в хранении целых чисел произвольной величины, но при этом в нём есть различные арифметические методы, позволяющие вести работу с этими огромными (ну or не очень) числами.

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

    Подробнее о BigInteger можно почитать вот в этой статье.

    Итак, How же будет выглядеть возведение в степень с помощью BigInteger в Java?

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

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

Ну вот, на сегодня все! Теперь вы знаете о самых разных способах возведения в степень. Согласитесь, это была несложная тема :)
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION