2015-05-13 63 views

回答

10

我們知道一個數字,X的N次方根,相當於提高x到就是N的認識到這一點的倒數的力量,我們可以使用pow功能找到N次方根:

let nthRoot = pow(base, (1/n)) 

其中basen是浮點變量。

+0

@Grimxn'1'是一個DoubleLiteralConvertible,工作得很好。請自己嘗試。 – nhgrif

+0

致歉。我非常習慣明確地寫出雙打,並沒有注意到! – Grimxn

+0

@Grimxn在類型被隱式推斷的地方很重要:'let val = 1'創建一個'Int'與'let val = 1.0'創建一個'Double'。但'讓val:Double = 1'完美無缺。 – nhgrif

1
let nthRoot = pow(base, (1/n)) // will return nan for negative base 

該表達式是部分解決方案,因爲它不適用於負數base數字。

Ex。根據所有數學定律,立方根到-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 

和相同的功能:

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