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