У меня проблема с домашним заданием, и мне нужна помощь, пожалуйста!
Вопрос 1:
Выполните нижеприведенные методы Java, чтобы поднять ToTower (x, n) увеличит число x до целой степени n (то есть для вычисления значения xn). Помните, что xn = 1 / xn и x0 = 1.
Это следует сделать за наименьшее количество возможных шагов (то есть за O (log n) раз).
Дайте решение, которое не является рекурсивным (итеративным):
Это мое решение:
public static double raiseToPower (double x, int n) {
double res=1;
boolean neg=false;
if(n<0)
{
neg=true;
}
if(n>0)
for (int i=0;i<n;i++) {
res = res * x;
}
if(neg==true) {
n=n*-1;
for (int i=0;i<n;i++) {
res = res * x;
}
res=1/res;
}
return res;
}
, но это не правильно, потому что это не эффективность
Это моя ошибка, например: 52,49 до степени 9, решаемой за 9 шагов, но это можно было сделать за 4 шага, 89,89 до степени 75, решаемой за 75 шагов, но это можно было сделать за 7 шагов, 78,57 до степени 63, решаемой за 63 шага, но это можно было сделать за 6 шагов 70.17 до степени 44, решаемой за 44 шага, но это можно было сделать за 6 шагов
Примечание: не должно быть используется в методе java .lang.MathPow
Вопрос 2:
Мне нужно написать код в точности как Вопрос 1 , но в рекурсивном
Это мой вопрос: Дайте рекурсивное решение:
Это мой код:
public static double raiseToPower (double x, int n) {
ouble dev=0.0;
if (n == 0) {
return 1;
} else {
if (n < 0) {
double count= raiseToPower (x, n+1);
dev=count*x;
return 1 / raiseToPower (x, -n);
}
if (n > 0) {
double count= raiseToPower (x, n-1);
dev=count*x;
}
}
return dev;
}
Этот код правильный, но не эффективный.
Это моя ошибка, например:
53,31 до степени 44, решенной за 44 шага, но это можно было сделать за 6 шагов 6,90 до степени 74, решаемой за 74 шага, но это можно было сделать за 7 шагов 80,76 до степени 76, решаемой за 76 шагов, но это можно было сделать за 7 шагов 51,44 до степени 86, решаемой за 86 шагов , но это можно было сделать за 7 шагов 76.26 до степени 50, решенной за 50 шагов, но это можно было сделать за 6 шагов 63.53 до степени 93, решенной за 93 шага, но это можно было сделать за 7 шагов
Примечание: нельзя использовать в методе java .lang.MathPow
Спасибо всем за помощь и решение обеих проблем !!!