Не получается решить задачу возведения в отрицательную степерь в java через while

Рейтинг: -4Ответов: 1Опубликовано: 18.01.2023

Вот описание задачи: Напишите программу, которая возводит число в любую целую степень. Первое число, то которое нужно возвести. Второе — степень. Пример ввода: 1-1 Пример ввода: 2-1 Вывод: 1 Вывод: 0.5 Начал решать, перепробовал разные способы, но при вводе указанных цифр не совпадают выводы, особенно где при вводе 2 -1 вывод должен быть: 0.5. Кто поможет?

public class Main {

  public static void main(String[] args) {

    int number, power;
    Scanner scanner = new Scanner(System.in);
    number = scanner.nextInt();
    power = scanner.nextInt();
    scanner.close();
    
    int temp = number, temp2=power;

    while (power!=0) {
        ...

Ответы

▲ 0

Для отрицательной степени нужно возводить в заданную степень дробь 1/number, объявленную как число с плавающей точкой.

public static double pow(int x, int n) {
    double p = n < 0 ? 1.0 / x : x;
    double res = 1.0;
    for (int i = 0, m = Math.abs(n); i < m; i++) {
        res *= p;
    }
    return res;
}

Вариант с while:

public static double pow(int x, int n) {
    double p = n < 0 ? 1.0 / x : x;
    int m = n < 0 ? -n : n;
    double res = 1.0;
    while (m-- > 0) {
        res *= p;
    }
    return res;
}

Тест:

for (int n = -2; n <= 2; n++) {
    System.out.println("2^" + n + " = " + pow(2, n));
}
2^-2 = 0.25
2^-1 = 0.5
2^0 = 1.0
2^1 = 2.0
2^2 = 4.0