Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用基于此标识的递归计算java中的幂_Java - Fatal编程技术网

如何使用基于此标识的递归计算java中的幂

如何使用基于此标识的递归计算java中的幂,java,Java,对于n为偶数且大于0的所有值,标识为xn=xn/22 我如何使用递归方法来实现这一点 我发现自己陷入困境,这就是我一直在做的 public static double power(double base, int power){ if (power == 0){ return 1; } else if (power > 0 || power % 2 == 0){ ??? } 您还需要考虑功率为奇数的情况,理想情况下还需要考虑功率为负的情况 为了不让我把一切都泄露出去,这

对于n为偶数且大于0的所有值,标识为xn=xn/22

我如何使用递归方法来实现这一点

我发现自己陷入困境,这就是我一直在做的

public static double power(double base, int power){
if (power == 0){
    return 1;
}

else if (power > 0 || power % 2 == 0){
    ???
}

您还需要考虑功率为奇数的情况,理想情况下还需要考虑功率为负的情况

为了不让我把一切都泄露出去,这里有一个JavaScript实现:

function power(x, n) {
  if (n < 0) {
    return undefined;             // uh-oh!
  } else if (n === 0) {
    return 1;                     // x^0 = 1
  } else if (n % 2 === 0) {
    const v = power(x, n / 2);    // optimisation for even powers
    return v * v;
  } else {
    return x * power(x, n - 1);   // general case - x^n = x * x^(n-1)
  }
}
您还可以包含x^1的显式测试,但是上面的代码在没有它的情况下工作,因为递归在计算x*x^0时终止

如果n为偶数,则xn=x2n/2

如果n为奇数,则xn=x*xn-1


使用这种方法的目的是计算logn中的幂,因为它是在幂为偶数时将幂除以2。

您尝试过什么?这似乎相当简单。您不必应用公式并替换值吗?或者我错过了smthing?我需要自己去解决这个问题,但我觉得答案就在眼前,但不知为什么我看不到。注:你错过了功率是奇数时该怎么办的案例。双t=功率基,功率/2;蒂姆非常困惑。这个电源方法是jst做x^n的,对吗?公式/标识仍然必须用另一种方法完成。
public class Pow {
    public static void main(String $[]){
        System.out.println(pow(2,9));
    }
    public static double pow(double base, int power){
        if (power == 0)
            return 1;
        //even
        if((power&1)==0)
            return pow(base*base,power/2);
        //odd
        return base*pow(base,power-1);
    }
}