只是一個練習:
func mySqrt(_ x: Int) -> Int {
if x<2 { return x }
var y = x
var z = (y (x/y)) / 2
while Double(abs(y - z)) >= 0.00001 {
y = z
z = (y (x/y)) / 2
}
return z
}
我在 StackOverflow 中經歷了很多答案,但找不到更好的解決方案,例如
在 ios、Objective C 和 Swift 中計算任何數字的平方根的最佳方法
不使用 sqrt 函式求平方根?
取輸入 x = 4 或任何完美的正方形,它作業正常。現在,取 x = 8,It Time out 之類的東西。
請幫幫我,我做錯了什么。
uj5u.com熱心網友回復:
問題是您正在嘗試使用整數進行所有計算。
8 的平方根不是整數。您需要使用Double所有變數(除了可選地將引數保留為Int)。Double如果您想要一個有意義的答案,則回傳值必須是 a 。
這是您Double在需要時使用的代碼:
func mySqrt(_ x: Int) -> Double {
if x < 2 { return Double(x) }
var y = Double(x)
var z = (y (Double(x)/y)) / 2
while (abs(y - z)) >= 0.00001 {
y = z
z = (y (Double(x)/y)) / 2
}
return z
}
print(mySqrt(8))
這給出了正確的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/531179.html
標籤:迅速数据结构平方根
上一篇:Mongoose開始和中止事務
下一篇:當我取消選擇單元格時更新計數
