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