如何找到值的第n个根?

Ror*_*ory 10 swift

在Swift中,找到值的第n个根的最简单方法是什么?

nhg*_*rif 16

我们知道数字的第N个根x等于将x提升到N的倒数的幂.知道这一点,我们可以使用该pow函数来找到第N个根:

let nthRoot = pow(base, (1/n))
Run Code Online (Sandbox Code Playgroud)

其中basen是浮点变量.

  • 我纠正了。“pow”对于其他数据类型(包括“Double”)是重载的。虽然我没有在文档中找到这一点,但在这里:) (2认同)

ana*_*kin 6

    let nthRoot = pow(base, (1/n)) // will return nan for negative base
Run Code Online (Sandbox Code Playgroud)

该表达式是部分解决方案,因为它不适用于负数base

前任。所有数学定律都-27明确定义了 的立方根( )。-3

这是一个正确计算负值的 n 次方根的函数,其中value是 的根数n

    func nthroot(value: Double, _ n: Double) -> Double {
        var res: Double
        if (value < 0 && abs(n % 2) == 1) {
            res = -pow(-value, 1/n)
        } else {
            res = pow(value, 1/n)
        }
        return res
    }

    nthroot(-27, 3) // returns -3
Run Code Online (Sandbox Code Playgroud)

以及使用三元运算符的相同函数:

    func nthroot(value: Double, _ n: Double) -> Double {
        return value < 0 && abs(n % 2) == 1 ? -pow(-value, 1/n) : pow(value, 1/n)
    }

    nthroot(-27, 3) // also returns -3
Run Code Online (Sandbox Code Playgroud)