美文网首页
求平方根(一个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