这对于计算第n个根是否正确?

时间:2016-11-05 20:21:47

标签: c#

对于正实数,第r个根给出为e ^(ln(x)/ r) 对于负实数,如果r是奇数,则rth根被给定为-e ^(ln | x | / r) 如果r是偶数,则负数的实数根不存在

static double rthRoot (double r, double x)
{
    double y;

    if (x > 0)
    {
        y = Math.Exp((Math.Log(x)) / r);
    }

    if (r+1 % 2 == 0)
    {
        if (x < 0)
        {
            y = -(Math.Exp((Math.Log(Math.Abs(x))) / r));
        }
    }
}        

1 个答案:

答案 0 :(得分:2)

您的代码中有两个错误:

  1. 您没有在rthRoot中返回值。您需要返回y,这将迫使您解决其他问题;如何处理rthRoot(2, -4)之类的通话。是否要返回特定值(double.Nan),是否要抛出ArgumentException或......?
  2. if (r + 1 % 2 == 0)没有做你认为它做的事情。您的代码相当于if (r + (1 % 2) == 0),这显然不是您想要的。正确的代码应为if ((r + 1) % 2 == 0)或更简单,更易读if (r % 2 != 0),这是检查奇怪性的标准方法。