当前位置: 首页 > 面试题库 >

第n个根实现

景俊拔
2023-03-14
问题内容

我正在研究一种计算数字的第n 个根的方法。但是,我对负数的第 n 个根有疑问。

大多数人说使用Math.pow(num, 1 / root),但这不适用于负数。

我已经试过了:

public static double root(double num, double root) {
    if (num < 0) {
        return -Math.pow(Math.abs(num), (1 / root));
    }
    return Math.pow(num, 1.0 / root);
}

但是,它不适用于所有数字,因为根可以是十进制。例如root(-26, 0.8)return
-58.71,但这是无效的输入。这甚至会为根源提供错误的答案。例如root(-2, 2)return -1.41421,但-2没有平方根。


问题答案:

你想做什么?除非您打算完全正确地处理复数,否则您不能取负数的第n个根。

例如,虽然(-8)^(1/3)具有的主要分支-2,但的唯一分支(-4)^(1/2)2i-2i

要正确处理此问题,您需要将数字转换成其极性形式,然后以该形式取所需的根。

所以-8是复数8*exp(i*pi)。在1/3那根2*exp(i*pi/3)2*exp(i*pi)2*exp[i*(-pi)/3]。然后,您可以使用de
Moivre公式
计算形式中的根a + bi



 类似资料:
  • 问题内容: 我想找到小于或等于n的第k个根的最大整数。我试过了 但是对于n = 125,k = 3,这给出了错误的答案!我碰巧知道5的立方是125。 有什么更好的算法? 背景:在2011年,这次滑坡使我击败了Google Code Jam。https://code.google.com/codejam/contest/dashboard?c=1150486#s=p2 问题答案: 一个解决方案首先通

  • 问题内容: 我需要一种方法来计算Python中长整数的第n个根。 我试过了,但是不起作用: OverflowError:long int太大,无法转换为float 有任何想法吗? 长整数是指真正的长整数,例如: 11968003966030964356885611480383408833172346450467339251 1960931441410456834630852911156774884

  • 描述 (Description) 第n个表达式的形式在扩展中很重要,否则它将选择器视为不同。 第n个表达式1n+2和n+2是等价的,但是extend将此表达式视为不同。 例如,使用以下代码创建一个LESS文件 - :nth-child(n+2) { color: #BF70A5; font-style: italic; } .child:extend(:nth-child(1n+2))

  • 是否有一种内置的方法来计算Python3十进制对象正确舍入的第n个根?

  • 本文向大家介绍C ++中的第N个幻数,包括了C ++中的第N个幻数的使用技巧和注意事项,需要的朋友参考一下 如果数字可以被A或B整除,则该数字被称为幻数。我们必须找到第N个幻数。由于答案可能非常大,我们将以10 ^ 9 + 7取模。 因此,如果输入为N = 4,A = 4,B = 3,则输出将为8 为了解决这个问题,我们将遵循以下步骤- 定义一个函数,它将使用x,A,B, 返回(x / A)+(x

  • 问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其转换为硒,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能提供关于第二个