如何实现pow(双x,双y)?

时间:2015-08-01 14:44:53

标签: java algorithm math

我知道如何推动战俘(双x,直播)

public class Solution {
    public double myPow(double x, int n) {
        if (n == 0)
            return 1;

        if (n % 2 == 0) {
            return myPow(x * x, n / 2);
        } else {
            if (n > 0)
                return x * myPow(x, n - 1);
            else
                return 1 / x * myPow(x, n + 1);
        }
    }
}

但如何让它处理双y?

2 个答案:

答案 0 :(得分:1)

非整数值的指数化是用无限级数进行数学的:

See here under "Exponential Series Expansion" and "Exponential Theorem"

基本上,您将使用已知的无限系列术语,并计算满足您的数值精度要求的数量。

答案 1 :(得分:-2)

如果我没记错,你需要为log(自然对数)和exp(指数)写一系列扩展。
因为
log(x ^ y)= y * log(x)和< br /> exp(log(x))= x
您可以评估结果。我想我使用泰勒系列。
wikipedia