尝试创建一个递归方法,该方法将java类(class)的int功效提高一个 double 值。指令说:“但是,编写代码,以便当n为偶数时,该方法将返回(x ^(n/2))^ 2。”
到目前为止,这是我所拥有的:
public static double powerFaster(double x, int n) {
if (n == 0) {
return 1;
}
else if ((n % 2) == 0) {
return ((x ^ (n / 2.0) ^ 2.0)); //Error occurs here.
} else {
return x * powerFaster(x, (n - 1));
}
}
最佳答案
^
是XOR运算符,不是幂。使用Math.pow()
供电。
就是说,我认为您错过了练习的重点。
当return powerFaster(x, n/2) * powerFaster(x, n/2);
是偶数时,您应该使用n
(实际上是进行一次递归调用,将其结果存储在变量中,然后将其自身相乘)。
public static double powerFaster(double x, int n) {
if (n == 0) {
return 1;
}
else if ((n % 2) == 0) {
double pow = powerFaster(x, n/2);
return pow * pow;
} else {
return x * powerFaster(x, (n - 1));
}
}