尝试创建一个递归方法,该方法将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));
     }
 }

10-06 12:32