Мне нужно написать рекурсивный метод с использованием Java, называемый степенью мощности, которая принимает двойной x и целое число n и возвращает x^n. Вот что я до сих пор.Рекурсивный метод для x^n, оптимизированный для, когда 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 четно. Я не думаю, что могу использовать рекурсию для этого. Я попытался реализовать следующее, но он также не работает, потому что я не могу использовать двойную силу для int.
if (n%2 == 0)
return (x^(n/2))^2;
Может кто-нибудь указать мне в правильном направлении? Я чувствую, что мне не хватает чего-то очевидного. Вся помощь была оценена.
Я проголосовал за вас за то, что вы студент, который решил проблему самостоятельно и показал хороший код. Отлично сработано. Подсказка: подумайте о том, как включить рекурсивный вызов в ваш случай с полной степенью мощности, и вы его получите. – duffymo
Спасибо! Очень признателен! –
Обозначение вопроса сбивает вас с толку. В Java '^' означает побитовое XOR. В квази-математическом обозначении «x^2» означает «x для второй мощности». Да, у вас уже есть ответ, но я хотел четко указать боевые нотации. – msw