JavaRush /בלוג Java /Random-HE /כיצד להגביר את ג'אווה

כיצד להגביר את ג'אווה

פורסם בקבוצה
שלום עולם! לגגל משהו או לבקש עזרה בפורום זה דבר נפוץ אפילו למתכנת מנוסה. אבל יש נושאים בפיתוח שהם כל כך בסיסיים ופשוטים שאפילו מתחיל ירוק צריך לדעת אותם. והנה אחד מהנושאים האלה. היום נדבר על אופן ביצוע האקספונציה ב-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 מחזירה ערך של type double (גם הארגומנטים הם כפולים, אבל שם משתמשים ב-cast type implicit).

    ועכשיו - בונוס: אפשרויות נוספות.

  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

    רקורסיה היא תכונה המאפשרת לשיטה לקרוא לעצמה. בג'אווה קיים מנגנון כזה, ולפיכך שיטות כאלה נקראות רקורסיביות.

    בעיות אלגוריתמיות רבות, אם לא כולן, ניתנות לפתרון רקורסיבית. זה גם לא יהיה יוצא מן הכלל, אז בואו נסתכל איך אתה יכול להעלות מספר לעוצמה מסוימת בצורה רקורסיבית:

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

    כפי שאנו יכולים לראות, יש לנו שני מקרים:

    1. התנאי ליציאה מהרקורסיה, או במילים אחרות, כשערך התואר שלנו יגיע לאחד, נתחיל להיזרק לאחור.
    2. המנגנון עצמו להכפלת הערך בתוצאה של קריאה לאותה שיטה, אך עם powValue - 1.

    ובכן, עכשיו הגיע הזמן להסתכל על שיטות עצלות יותר, כלומר, שיטות "מחוץ לקופסה".

  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