Мне нужно написать рекурсивный метод с использованием Java с именем power, который принимает двойной x и целое число n и возвращает x ^ n. Вот что я до сих пор.
public static double power(double x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
else
return x * (power(x, n-1));
}
Этот код работает так, как ожидалось. Тем не менее, я пытаюсь пройти лишнюю милю и выполнить следующие дополнительные упражнения:
"Необязательная задача: вы можете сделать этот метод более эффективным, когда n четно, используя x ^ n = (x ^ (n/2)) ^ 2."
Я не уверен, как реализовать эту последнюю формулу, когда n четно. Я не думаю, что могу использовать рекурсию для этого. Я попытался реализовать следующее, но он также не работает, потому что я не могу взять double в силу int.
if (n%2 == 0)
return (x^(n/2))^2;
Может кто-нибудь указать мне в правильном направлении? Я чувствую, что мне не хватает чего-то очевидного. Вся помощь была оценена.