美文网首页
求平方根(一个Swift函数式编程示例)

求平方根(一个Swift函数式编程示例)

作者: 吴泉 | 来源:发表于2016-06-17 11:15 被阅读765次

看到一个求平方根的算法,用Swift实现了一下。
Talk is cheap. Show me the code.

func fixedPoint(fx: (Double)->Double, first: Double) -> Double {
    let tolerance = 0.00001
    func closeEnough(x: Double, y: Double) -> Bool {
        return fabs(x - y) < tolerance
    }
    func Try(guess: Double) -> Double {
        let next = fx(guess)
        print("\(next), \(guess)")
        if closeEnough(guess, y: next) {
            return next
        } else {
            return Try(next)
        }
    }
    return Try(first)
}

func Sqrt(x: Double) -> Double {
    func calc(y: Double) -> Double {
        func innerCalc(a: Double, b: Double) -> Double {
            return (a+b)/2
        }
        return innerCalc(y, b: x/y)
    }
    return fixedPoint(calc, first: 1.0)
}

print(Sqrt(100))

相关文章

网友评论

      本文标题:求平方根(一个Swift函数式编程示例)

      本文链接:https://www.haomeiwen.com/subject/krkvdttx.html